topology.uniform_space.equicontinuityMathlib.Topology.UniformSpace.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)

(last sync)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -143,7 +143,7 @@ protected abbrev Set.UniformEquicontinuous (H : Set <| β → α) : Prop :=
 #align set.uniform_equicontinuous Set.UniformEquicontinuous
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (x y «expr ∈ » V) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:642:2: warning: expanding binder collection (x y «expr ∈ » V) -/
 #print equicontinuousAt_iff_pair /-
 /-- Reformulation of equicontinuity at `x₀` comparing two variables near `x₀` instead of comparing
 only one with `x₀`. -/
Diff
@@ -173,7 +173,7 @@ theorem UniformEquicontinuous.equicontinuous {F : ι → β → α} (h : Uniform
 theorem EquicontinuousAt.continuousAt {F : ι → X → α} {x₀ : X} (h : EquicontinuousAt F x₀) (i : ι) :
     ContinuousAt (F i) x₀ := by
   intro U hU
-  rw [UniformSpace.mem_nhds_iff] at hU 
+  rw [UniformSpace.mem_nhds_iff] at hU
   rcases hU with ⟨V, hV₁, hV₂⟩
   exact mem_map.mpr (mem_of_superset (h V hV₁) fun x hx => hV₂ (hx i))
 #align equicontinuous_at.continuous_at EquicontinuousAt.continuousAt
@@ -450,7 +450,7 @@ theorem EquicontinuousAt.closure' {A : Set Y} {u : Y → X → α} {x₀ : X}
   rcases mem_uniformity_isClosed hU with ⟨V, hV, hVclosed, hVU⟩
   filter_upwards [hA V hV] with x hx
   rw [SetCoe.forall] at *
-  change A ⊆ (fun f => (u f x₀, u f x)) ⁻¹' V at hx 
+  change A ⊆ (fun f => (u f x₀, u f x)) ⁻¹' V at hx
   refine' (closure_minimal hx <| hVclosed.preimage <| _).trans (preimage_mono hVU)
   exact Continuous.prod_mk ((continuous_apply x₀).comp hu) ((continuous_apply x).comp hu)
 #align equicontinuous_at.closure' EquicontinuousAt.closure'
@@ -518,7 +518,7 @@ theorem UniformEquicontinuous.closure' {A : Set Y} {u : Y → β → α}
   filter_upwards [hA V hV]
   rintro ⟨x, y⟩ hxy
   rw [SetCoe.forall] at *
-  change A ⊆ (fun f => (u f x, u f y)) ⁻¹' V at hxy 
+  change A ⊆ (fun f => (u f x, u f y)) ⁻¹' V at hxy
   refine' (closure_minimal hxy <| hVclosed.preimage <| _).trans (preimage_mono hVU)
   exact Continuous.prod_mk ((continuous_apply x).comp hu) ((continuous_apply y).comp hu)
 #align uniform_equicontinuous.closure' UniformEquicontinuous.closure'
Diff
@@ -277,14 +277,14 @@ theorem equicontinuous_iff_range {F : ι → X → α} :
 #align equicontinuous_iff_range equicontinuous_iff_range
 -/
 
-#print uniformEquicontinuous_at_iff_range /-
+#print uniformEquicontinuous_iff_range /-
 /-- A family `𝓕 : ι → β → α` is uniformly equicontinuous iff `range 𝓕` is uniformly equicontinuous,
 i.e the family `coe : range F → β → α` is uniformly equicontinuous. -/
-theorem uniformEquicontinuous_at_iff_range {F : ι → β → α} :
+theorem uniformEquicontinuous_iff_range {F : ι → β → α} :
     UniformEquicontinuous F ↔ UniformEquicontinuous (coe : range F → β → α) :=
   ⟨fun h => by rw [← comp_range_splitting F] <;> exact h.comp _, fun h =>
     h.comp (rangeFactorization F)⟩
-#align uniform_equicontinuous_at_iff_range uniformEquicontinuous_at_iff_range
+#align uniform_equicontinuous_at_iff_range uniformEquicontinuous_iff_range
 -/
 
 section
@@ -456,13 +456,13 @@ theorem EquicontinuousAt.closure' {A : Set Y} {u : Y → X → α} {x₀ : X}
 #align equicontinuous_at.closure' EquicontinuousAt.closure'
 -/
 
-#print EquicontinuousAt.closure /-
+#print Set.EquicontinuousAt.closure /-
 /-- If a set of functions is equicontinuous at some `x₀`, its closure for the product topology is
 also equicontinuous at `x₀`. -/
-theorem EquicontinuousAt.closure {A : Set <| X → α} {x₀ : X} (hA : A.EquicontinuousAt x₀) :
+theorem Set.EquicontinuousAt.closure {A : Set <| X → α} {x₀ : X} (hA : A.EquicontinuousAt x₀) :
     (closure A).EquicontinuousAt x₀ :=
   @EquicontinuousAt.closure' _ _ _ _ _ _ _ id _ hA continuous_id
-#align equicontinuous_at.closure EquicontinuousAt.closure
+#align equicontinuous_at.closure Set.EquicontinuousAt.closure
 -/
 
 #print Filter.Tendsto.continuousAt_of_equicontinuousAt /-
@@ -487,21 +487,21 @@ theorem Equicontinuous.closure' {A : Set Y} {u : Y → X → α}
 #align equicontinuous.closure' Equicontinuous.closure'
 -/
 
-#print Equicontinuous.closure /-
+#print Set.Equicontinuous.closure /-
 /-- If a set of functions is equicontinuous, its closure for the product topology is also
 equicontinuous. -/
-theorem Equicontinuous.closure {A : Set <| X → α} (hA : A.Equicontinuous) :
+theorem Set.Equicontinuous.closure {A : Set <| X → α} (hA : A.Equicontinuous) :
     (closure A).Equicontinuous := fun x => (hA x).closure
-#align equicontinuous.closure Equicontinuous.closure
+#align equicontinuous.closure Set.Equicontinuous.closure
 -/
 
-#print Filter.Tendsto.continuous_of_equicontinuousAt /-
+#print Filter.Tendsto.continuous_of_equicontinuous /-
 /-- If `𝓕 : ι → X → α` tends to `f : X → α` *pointwise* along some nontrivial filter, and if the
 family `𝓕` is equicontinuous, then the limit is continuous. -/
-theorem Filter.Tendsto.continuous_of_equicontinuousAt {l : Filter ι} [l.ne_bot] {F : ι → X → α}
+theorem Filter.Tendsto.continuous_of_equicontinuous {l : Filter ι} [l.ne_bot] {F : ι → X → α}
     {f : X → α} (h₁ : Tendsto F l (𝓝 f)) (h₂ : Equicontinuous F) : Continuous f :=
   continuous_iff_continuousAt.mpr fun x => h₁.continuousAt_of_equicontinuousAt (h₂ x)
-#align filter.tendsto.continuous_of_equicontinuous_at Filter.Tendsto.continuous_of_equicontinuousAt
+#align filter.tendsto.continuous_of_equicontinuous_at Filter.Tendsto.continuous_of_equicontinuous
 -/
 
 #print UniformEquicontinuous.closure' /-
@@ -524,13 +524,13 @@ theorem UniformEquicontinuous.closure' {A : Set Y} {u : Y → β → α}
 #align uniform_equicontinuous.closure' UniformEquicontinuous.closure'
 -/
 
-#print UniformEquicontinuous.closure /-
+#print Set.UniformEquicontinuous.closure /-
 /-- If a set of functions is uniformly equicontinuous, its closure for the product topology is also
 uniformly equicontinuous. -/
-theorem UniformEquicontinuous.closure {A : Set <| β → α} (hA : A.UniformEquicontinuous) :
+theorem Set.UniformEquicontinuous.closure {A : Set <| β → α} (hA : A.UniformEquicontinuous) :
     (closure A).UniformEquicontinuous :=
   @UniformEquicontinuous.closure' _ _ _ _ _ _ _ id hA continuous_id
-#align uniform_equicontinuous.closure UniformEquicontinuous.closure
+#align uniform_equicontinuous.closure Set.UniformEquicontinuous.closure
 -/
 
 #print Filter.Tendsto.uniformContinuous_of_uniformEquicontinuous /-
@@ -539,7 +539,7 @@ family `𝓕` is uniformly equicontinuous, then the limit is uniformly continuou
 theorem Filter.Tendsto.uniformContinuous_of_uniformEquicontinuous {l : Filter ι} [l.ne_bot]
     {F : ι → β → α} {f : β → α} (h₁ : Tendsto F l (𝓝 f)) (h₂ : UniformEquicontinuous F) :
     UniformContinuous f :=
-  (uniformEquicontinuous_at_iff_range.mp h₂).closure.UniformContinuous
+  (uniformEquicontinuous_iff_range.mp h₂).closure.UniformContinuous
     ⟨f, mem_closure_of_tendsto h₁ <| eventually_of_forall mem_range_self⟩
 #align filter.tendsto.uniform_continuous_of_uniform_equicontinuous Filter.Tendsto.uniformContinuous_of_uniformEquicontinuous
 -/
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.UniformSpace.UniformConvergenceTopology
+import Topology.UniformSpace.UniformConvergenceTopology
 
 #align_import topology.uniform_space.equicontinuity from "leanprover-community/mathlib"@"ee05e9ce1322178f0c12004eb93c00d2c8c00ed2"
 
@@ -143,7 +143,7 @@ protected abbrev Set.UniformEquicontinuous (H : Set <| β → α) : Prop :=
 #align set.uniform_equicontinuous Set.UniformEquicontinuous
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (x y «expr ∈ » V) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (x y «expr ∈ » V) -/
 #print equicontinuousAt_iff_pair /-
 /-- Reformulation of equicontinuity at `x₀` comparing two variables near `x₀` instead of comparing
 only one with `x₀`. -/
Diff
@@ -495,13 +495,13 @@ theorem Equicontinuous.closure {A : Set <| X → α} (hA : A.Equicontinuous) :
 #align equicontinuous.closure Equicontinuous.closure
 -/
 
-#print Filter.Tendsto.continuous_of_equicontinuous_at /-
+#print Filter.Tendsto.continuous_of_equicontinuousAt /-
 /-- If `𝓕 : ι → X → α` tends to `f : X → α` *pointwise* along some nontrivial filter, and if the
 family `𝓕` is equicontinuous, then the limit is continuous. -/
-theorem Filter.Tendsto.continuous_of_equicontinuous_at {l : Filter ι} [l.ne_bot] {F : ι → X → α}
+theorem Filter.Tendsto.continuous_of_equicontinuousAt {l : Filter ι} [l.ne_bot] {F : ι → X → α}
     {f : X → α} (h₁ : Tendsto F l (𝓝 f)) (h₂ : Equicontinuous F) : Continuous f :=
   continuous_iff_continuousAt.mpr fun x => h₁.continuousAt_of_equicontinuousAt (h₂ x)
-#align filter.tendsto.continuous_of_equicontinuous_at Filter.Tendsto.continuous_of_equicontinuous_at
+#align filter.tendsto.continuous_of_equicontinuous_at Filter.Tendsto.continuous_of_equicontinuousAt
 -/
 
 #print UniformEquicontinuous.closure' /-
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.uniform_space.equicontinuity
-! leanprover-community/mathlib commit ee05e9ce1322178f0c12004eb93c00d2c8c00ed2
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Topology.UniformSpace.UniformConvergenceTopology
 
+#align_import topology.uniform_space.equicontinuity from "leanprover-community/mathlib"@"ee05e9ce1322178f0c12004eb93c00d2c8c00ed2"
+
 /-!
 # Equicontinuity of a family of functions
 
@@ -146,7 +143,7 @@ protected abbrev Set.UniformEquicontinuous (H : Set <| β → α) : Prop :=
 #align set.uniform_equicontinuous Set.UniformEquicontinuous
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (x y «expr ∈ » V) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (x y «expr ∈ » V) -/
 #print equicontinuousAt_iff_pair /-
 /-- Reformulation of equicontinuity at `x₀` comparing two variables near `x₀` instead of comparing
 only one with `x₀`. -/
Diff
@@ -147,6 +147,7 @@ protected abbrev Set.UniformEquicontinuous (H : Set <| β → α) : Prop :=
 -/
 
 /- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (x y «expr ∈ » V) -/
+#print equicontinuousAt_iff_pair /-
 /-- Reformulation of equicontinuity at `x₀` comparing two variables near `x₀` instead of comparing
 only one with `x₀`. -/
 theorem equicontinuousAt_iff_pair {F : ι → X → α} {x₀ : X} :
@@ -160,13 +161,17 @@ theorem equicontinuousAt_iff_pair {F : ι → X → α} {x₀ : X} :
   · rcases H U hU with ⟨V, hV, hVU⟩
     filter_upwards [hV] using fun x hx i => hVU x₀ (mem_of_mem_nhds hV) x hx i
 #align equicontinuous_at_iff_pair equicontinuousAt_iff_pair
+-/
 
+#print UniformEquicontinuous.equicontinuous /-
 /-- Uniform equicontinuity implies equicontinuity. -/
 theorem UniformEquicontinuous.equicontinuous {F : ι → β → α} (h : UniformEquicontinuous F) :
     Equicontinuous F := fun x₀ U hU =>
   mem_of_superset (ball_mem_nhds x₀ (h U hU)) fun x hx i => hx i
 #align uniform_equicontinuous.equicontinuous UniformEquicontinuous.equicontinuous
+-/
 
+#print EquicontinuousAt.continuousAt /-
 /-- Each function of a family equicontinuous at `x₀` is continuous at `x₀`. -/
 theorem EquicontinuousAt.continuousAt {F : ι → X → α} {x₀ : X} (h : EquicontinuousAt F x₀) (i : ι) :
     ContinuousAt (F i) x₀ := by
@@ -175,64 +180,88 @@ theorem EquicontinuousAt.continuousAt {F : ι → X → α} {x₀ : X} (h : Equi
   rcases hU with ⟨V, hV₁, hV₂⟩
   exact mem_map.mpr (mem_of_superset (h V hV₁) fun x hx => hV₂ (hx i))
 #align equicontinuous_at.continuous_at EquicontinuousAt.continuousAt
+-/
 
+#print Set.EquicontinuousAt.continuousAt_of_mem /-
 protected theorem Set.EquicontinuousAt.continuousAt_of_mem {H : Set <| X → α} {x₀ : X}
     (h : H.EquicontinuousAt x₀) {f : X → α} (hf : f ∈ H) : ContinuousAt f x₀ :=
   h.ContinuousAt ⟨f, hf⟩
 #align set.equicontinuous_at.continuous_at_of_mem Set.EquicontinuousAt.continuousAt_of_mem
+-/
 
+#print Equicontinuous.continuous /-
 /-- Each function of an equicontinuous family is continuous. -/
 theorem Equicontinuous.continuous {F : ι → X → α} (h : Equicontinuous F) (i : ι) :
     Continuous (F i) :=
   continuous_iff_continuousAt.mpr fun x => (h x).ContinuousAt i
 #align equicontinuous.continuous Equicontinuous.continuous
+-/
 
+#print Set.Equicontinuous.continuous_of_mem /-
 protected theorem Set.Equicontinuous.continuous_of_mem {H : Set <| X → α} (h : H.Equicontinuous)
     {f : X → α} (hf : f ∈ H) : Continuous f :=
   h.Continuous ⟨f, hf⟩
 #align set.equicontinuous.continuous_of_mem Set.Equicontinuous.continuous_of_mem
+-/
 
+#print UniformEquicontinuous.uniformContinuous /-
 /-- Each function of a uniformly equicontinuous family is uniformly continuous. -/
 theorem UniformEquicontinuous.uniformContinuous {F : ι → β → α} (h : UniformEquicontinuous F)
     (i : ι) : UniformContinuous (F i) := fun U hU =>
   mem_map.mpr (mem_of_superset (h U hU) fun xy hxy => hxy i)
 #align uniform_equicontinuous.uniform_continuous UniformEquicontinuous.uniformContinuous
+-/
 
+#print Set.UniformEquicontinuous.uniformContinuous_of_mem /-
 protected theorem Set.UniformEquicontinuous.uniformContinuous_of_mem {H : Set <| β → α}
     (h : H.UniformEquicontinuous) {f : β → α} (hf : f ∈ H) : UniformContinuous f :=
   h.UniformContinuous ⟨f, hf⟩
 #align set.uniform_equicontinuous.uniform_continuous_of_mem Set.UniformEquicontinuous.uniformContinuous_of_mem
+-/
 
+#print EquicontinuousAt.comp /-
 /-- Taking sub-families preserves equicontinuity at a point. -/
 theorem EquicontinuousAt.comp {F : ι → X → α} {x₀ : X} (h : EquicontinuousAt F x₀) (u : κ → ι) :
     EquicontinuousAt (F ∘ u) x₀ := fun U hU => (h U hU).mono fun x H k => H (u k)
 #align equicontinuous_at.comp EquicontinuousAt.comp
+-/
 
+#print Set.EquicontinuousAt.mono /-
 protected theorem Set.EquicontinuousAt.mono {H H' : Set <| X → α} {x₀ : X}
     (h : H.EquicontinuousAt x₀) (hH : H' ⊆ H) : H'.EquicontinuousAt x₀ :=
   h.comp (inclusion hH)
 #align set.equicontinuous_at.mono Set.EquicontinuousAt.mono
+-/
 
+#print Equicontinuous.comp /-
 /-- Taking sub-families preserves equicontinuity. -/
 theorem Equicontinuous.comp {F : ι → X → α} (h : Equicontinuous F) (u : κ → ι) :
     Equicontinuous (F ∘ u) := fun x => (h x).comp u
 #align equicontinuous.comp Equicontinuous.comp
+-/
 
+#print Set.Equicontinuous.mono /-
 protected theorem Set.Equicontinuous.mono {H H' : Set <| X → α} (h : H.Equicontinuous)
     (hH : H' ⊆ H) : H'.Equicontinuous :=
   h.comp (inclusion hH)
 #align set.equicontinuous.mono Set.Equicontinuous.mono
+-/
 
+#print UniformEquicontinuous.comp /-
 /-- Taking sub-families preserves uniform equicontinuity. -/
 theorem UniformEquicontinuous.comp {F : ι → β → α} (h : UniformEquicontinuous F) (u : κ → ι) :
     UniformEquicontinuous (F ∘ u) := fun U hU => (h U hU).mono fun x H k => H (u k)
 #align uniform_equicontinuous.comp UniformEquicontinuous.comp
+-/
 
+#print Set.UniformEquicontinuous.mono /-
 protected theorem Set.UniformEquicontinuous.mono {H H' : Set <| β → α} (h : H.UniformEquicontinuous)
     (hH : H' ⊆ H) : H'.UniformEquicontinuous :=
   h.comp (inclusion hH)
 #align set.uniform_equicontinuous.mono Set.UniformEquicontinuous.mono
+-/
 
+#print equicontinuousAt_iff_range /-
 /-- A family `𝓕 : ι → X → α` is equicontinuous at `x₀` iff `range 𝓕` is equicontinuous at `x₀`,
 i.e the family `coe : range F → X → α` is equicontinuous at `x₀`. -/
 theorem equicontinuousAt_iff_range {F : ι → X → α} {x₀ : X} :
@@ -240,14 +269,18 @@ theorem equicontinuousAt_iff_range {F : ι → X → α} {x₀ : X} :
   ⟨fun h => by rw [← comp_range_splitting F] <;> exact h.comp _, fun h =>
     h.comp (rangeFactorization F)⟩
 #align equicontinuous_at_iff_range equicontinuousAt_iff_range
+-/
 
+#print equicontinuous_iff_range /-
 /-- A family `𝓕 : ι → X → α` is equicontinuous iff `range 𝓕` is equicontinuous,
 i.e the family `coe : range F → X → α` is equicontinuous. -/
 theorem equicontinuous_iff_range {F : ι → X → α} :
     Equicontinuous F ↔ Equicontinuous (coe : range F → X → α) :=
   forall_congr' fun x₀ => equicontinuousAt_iff_range
 #align equicontinuous_iff_range equicontinuous_iff_range
+-/
 
+#print uniformEquicontinuous_at_iff_range /-
 /-- A family `𝓕 : ι → β → α` is uniformly equicontinuous iff `range 𝓕` is uniformly equicontinuous,
 i.e the family `coe : range F → β → α` is uniformly equicontinuous. -/
 theorem uniformEquicontinuous_at_iff_range {F : ι → β → α} :
@@ -255,11 +288,13 @@ theorem uniformEquicontinuous_at_iff_range {F : ι → β → α} :
   ⟨fun h => by rw [← comp_range_splitting F] <;> exact h.comp _, fun h =>
     h.comp (rangeFactorization F)⟩
 #align uniform_equicontinuous_at_iff_range uniformEquicontinuous_at_iff_range
+-/
 
 section
 
 open UniformFun
 
+#print equicontinuousAt_iff_continuousAt /-
 /-- A family `𝓕 : ι → X → α` is equicontinuous at `x₀` iff the function `swap 𝓕 : X → ι → α` is
 continuous at `x₀` *when `ι → α` is equipped with the topology of uniform convergence*. This is
 very useful for developping the equicontinuity API, but it should not be used directly for other
@@ -268,7 +303,9 @@ theorem equicontinuousAt_iff_continuousAt {F : ι → X → α} {x₀ : X} :
     EquicontinuousAt F x₀ ↔ ContinuousAt (ofFun ∘ Function.swap F : X → ι →ᵤ α) x₀ := by
   rw [ContinuousAt, (UniformFun.hasBasis_nhds ι α _).tendsto_right_iff] <;> rfl
 #align equicontinuous_at_iff_continuous_at equicontinuousAt_iff_continuousAt
+-/
 
+#print equicontinuous_iff_continuous /-
 /-- A family `𝓕 : ι → X → α` is equicontinuous iff the function `swap 𝓕 : X → ι → α` is
 continuous *when `ι → α` is equipped with the topology of uniform convergence*. This is
 very useful for developping the equicontinuity API, but it should not be used directly for other
@@ -277,7 +314,9 @@ theorem equicontinuous_iff_continuous {F : ι → X → α} :
     Equicontinuous F ↔ Continuous (ofFun ∘ Function.swap F : X → ι →ᵤ α) := by
   simp_rw [Equicontinuous, continuous_iff_continuousAt, equicontinuousAt_iff_continuousAt]
 #align equicontinuous_iff_continuous equicontinuous_iff_continuous
+-/
 
+#print uniformEquicontinuous_iff_uniformContinuous /-
 /-- A family `𝓕 : ι → β → α` is uniformly equicontinuous iff the function `swap 𝓕 : β → ι → α` is
 uniformly continuous *when `ι → α` is equipped with the uniform structure of uniform convergence*.
 This is very useful for developping the equicontinuity API, but it should not be used directly
@@ -286,7 +325,9 @@ theorem uniformEquicontinuous_iff_uniformContinuous {F : ι → β → α} :
     UniformEquicontinuous F ↔ UniformContinuous (ofFun ∘ Function.swap F : β → ι →ᵤ α) := by
   rw [UniformContinuous, (UniformFun.hasBasis_uniformity ι α).tendsto_right_iff] <;> rfl
 #align uniform_equicontinuous_iff_uniform_continuous uniformEquicontinuous_iff_uniformContinuous
+-/
 
+#print Filter.HasBasis.equicontinuousAt_iff_left /-
 theorem Filter.HasBasis.equicontinuousAt_iff_left {κ : Type _} {p : κ → Prop} {s : κ → Set X}
     {F : ι → X → α} {x₀ : X} (hX : (𝓝 x₀).HasBasis p s) :
     EquicontinuousAt F x₀ ↔ ∀ U ∈ 𝓤 α, ∃ (k : _) (_ : p k), ∀ x ∈ s k, ∀ i, (F i x₀, F i x) ∈ U :=
@@ -295,7 +336,9 @@ theorem Filter.HasBasis.equicontinuousAt_iff_left {κ : Type _} {p : κ → Prop
     hX.tendsto_iff (UniformFun.hasBasis_nhds ι α _)]
   rfl
 #align filter.has_basis.equicontinuous_at_iff_left Filter.HasBasis.equicontinuousAt_iff_left
+-/
 
+#print Filter.HasBasis.equicontinuousAt_iff_right /-
 theorem Filter.HasBasis.equicontinuousAt_iff_right {κ : Type _} {p : κ → Prop} {s : κ → Set (α × α)}
     {F : ι → X → α} {x₀ : X} (hα : (𝓤 α).HasBasis p s) :
     EquicontinuousAt F x₀ ↔ ∀ k, p k → ∀ᶠ x in 𝓝 x₀, ∀ i, (F i x₀, F i x) ∈ s k :=
@@ -304,7 +347,9 @@ theorem Filter.HasBasis.equicontinuousAt_iff_right {κ : Type _} {p : κ → Pro
     (UniformFun.hasBasis_nhds_of_basis ι α _ hα).tendsto_right_iff]
   rfl
 #align filter.has_basis.equicontinuous_at_iff_right Filter.HasBasis.equicontinuousAt_iff_right
+-/
 
+#print Filter.HasBasis.equicontinuousAt_iff /-
 theorem Filter.HasBasis.equicontinuousAt_iff {κ₁ κ₂ : Type _} {p₁ : κ₁ → Prop} {s₁ : κ₁ → Set X}
     {p₂ : κ₂ → Prop} {s₂ : κ₂ → Set (α × α)} {F : ι → X → α} {x₀ : X} (hX : (𝓝 x₀).HasBasis p₁ s₁)
     (hα : (𝓤 α).HasBasis p₂ s₂) :
@@ -315,7 +360,9 @@ theorem Filter.HasBasis.equicontinuousAt_iff {κ₁ κ₂ : Type _} {p₁ : κ
     hX.tendsto_iff (UniformFun.hasBasis_nhds_of_basis ι α _ hα)]
   rfl
 #align filter.has_basis.equicontinuous_at_iff Filter.HasBasis.equicontinuousAt_iff
+-/
 
+#print Filter.HasBasis.uniformEquicontinuous_iff_left /-
 theorem Filter.HasBasis.uniformEquicontinuous_iff_left {κ : Type _} {p : κ → Prop}
     {s : κ → Set (β × β)} {F : ι → β → α} (hβ : (𝓤 β).HasBasis p s) :
     UniformEquicontinuous F ↔
@@ -326,7 +373,9 @@ theorem Filter.HasBasis.uniformEquicontinuous_iff_left {κ : Type _} {p : κ →
   simp_rw [Prod.forall]
   rfl
 #align filter.has_basis.uniform_equicontinuous_iff_left Filter.HasBasis.uniformEquicontinuous_iff_left
+-/
 
+#print Filter.HasBasis.uniformEquicontinuous_iff_right /-
 theorem Filter.HasBasis.uniformEquicontinuous_iff_right {κ : Type _} {p : κ → Prop}
     {s : κ → Set (α × α)} {F : ι → β → α} (hα : (𝓤 α).HasBasis p s) :
     UniformEquicontinuous F ↔ ∀ k, p k → ∀ᶠ xy : β × β in 𝓤 β, ∀ i, (F i xy.1, F i xy.2) ∈ s k :=
@@ -335,7 +384,9 @@ theorem Filter.HasBasis.uniformEquicontinuous_iff_right {κ : Type _} {p : κ 
     (UniformFun.hasBasis_uniformity_of_basis ι α hα).tendsto_right_iff]
   rfl
 #align filter.has_basis.uniform_equicontinuous_iff_right Filter.HasBasis.uniformEquicontinuous_iff_right
+-/
 
+#print Filter.HasBasis.uniformEquicontinuous_iff /-
 theorem Filter.HasBasis.uniformEquicontinuous_iff {κ₁ κ₂ : Type _} {p₁ : κ₁ → Prop}
     {s₁ : κ₁ → Set (β × β)} {p₂ : κ₂ → Prop} {s₂ : κ₂ → Set (α × α)} {F : ι → β → α}
     (hβ : (𝓤 β).HasBasis p₁ s₁) (hα : (𝓤 α).HasBasis p₂ s₂) :
@@ -347,7 +398,9 @@ theorem Filter.HasBasis.uniformEquicontinuous_iff {κ₁ κ₂ : Type _} {p₁ :
   simp_rw [Prod.forall]
   rfl
 #align filter.has_basis.uniform_equicontinuous_iff Filter.HasBasis.uniformEquicontinuous_iff
+-/
 
+#print UniformInducing.equicontinuousAt_iff /-
 /-- Given `u : α → β` a uniform inducing map, a family `𝓕 : ι → X → α` is equicontinuous at a point
 `x₀ : X` iff the family `𝓕'`, obtained by precomposing each function of `𝓕` by `u`, is
 equicontinuous at `x₀`. -/
@@ -358,8 +411,10 @@ theorem UniformInducing.equicontinuousAt_iff {F : ι → X → α} {x₀ : X} {u
   rw [equicontinuousAt_iff_continuousAt, equicontinuousAt_iff_continuousAt, this.continuous_at_iff]
   rfl
 #align uniform_inducing.equicontinuous_at_iff UniformInducing.equicontinuousAt_iff
+-/
 
 /- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:73:14: unsupported tactic `congrm #[[expr ∀ x, (_ : exprProp())]] -/
+#print UniformInducing.equicontinuous_iff /-
 /-- Given `u : α → β` a uniform inducing map, a family `𝓕 : ι → X → α` is equicontinuous iff the
 family `𝓕'`, obtained by precomposing each function of `𝓕` by `u`, is equicontinuous. -/
 theorem UniformInducing.equicontinuous_iff {F : ι → X → α} {u : α → β} (hu : UniformInducing u) :
@@ -369,7 +424,9 @@ theorem UniformInducing.equicontinuous_iff {F : ι → X → α} {u : α → β}
     "./././Mathport/Syntax/Translate/Tactic/Builtin.lean:73:14: unsupported tactic `congrm #[[expr ∀ x, (_ : exprProp())]]"
   rw [hu.equicontinuous_at_iff]
 #align uniform_inducing.equicontinuous_iff UniformInducing.equicontinuous_iff
+-/
 
+#print UniformInducing.uniformEquicontinuous_iff /-
 /-- Given `u : α → γ` a uniform inducing map, a family `𝓕 : ι → β → α` is uniformly equicontinuous
 iff the family `𝓕'`, obtained by precomposing each function of `𝓕` by `u`, is uniformly
 equicontinuous. -/
@@ -381,7 +438,9 @@ theorem UniformInducing.uniformEquicontinuous_iff {F : ι → β → α} {u : α
     this.uniform_continuous_iff]
   rfl
 #align uniform_inducing.uniform_equicontinuous_iff UniformInducing.uniformEquicontinuous_iff
+-/
 
+#print EquicontinuousAt.closure' /-
 /-- A version of `equicontinuous_at.closure` applicable to subsets of types which embed continuously
 into `X → α` with the product topology. It turns out we don't need any other condition on the
 embedding than continuity, but in practice this will mostly be applied to `fun_like` types where
@@ -398,14 +457,18 @@ theorem EquicontinuousAt.closure' {A : Set Y} {u : Y → X → α} {x₀ : X}
   refine' (closure_minimal hx <| hVclosed.preimage <| _).trans (preimage_mono hVU)
   exact Continuous.prod_mk ((continuous_apply x₀).comp hu) ((continuous_apply x).comp hu)
 #align equicontinuous_at.closure' EquicontinuousAt.closure'
+-/
 
+#print EquicontinuousAt.closure /-
 /-- If a set of functions is equicontinuous at some `x₀`, its closure for the product topology is
 also equicontinuous at `x₀`. -/
 theorem EquicontinuousAt.closure {A : Set <| X → α} {x₀ : X} (hA : A.EquicontinuousAt x₀) :
     (closure A).EquicontinuousAt x₀ :=
   @EquicontinuousAt.closure' _ _ _ _ _ _ _ id _ hA continuous_id
 #align equicontinuous_at.closure EquicontinuousAt.closure
+-/
 
+#print Filter.Tendsto.continuousAt_of_equicontinuousAt /-
 /-- If `𝓕 : ι → X → α` tends to `f : X → α` *pointwise* along some nontrivial filter, and if the
 family `𝓕` is equicontinuous at some `x₀ : X`, then the limit is continuous at `x₀`. -/
 theorem Filter.Tendsto.continuousAt_of_equicontinuousAt {l : Filter ι} [l.ne_bot] {F : ι → X → α}
@@ -414,7 +477,9 @@ theorem Filter.Tendsto.continuousAt_of_equicontinuousAt {l : Filter ι} [l.ne_bo
   (equicontinuousAt_iff_range.mp h₂).closure.ContinuousAt
     ⟨f, mem_closure_of_tendsto h₁ <| eventually_of_forall mem_range_self⟩
 #align filter.tendsto.continuous_at_of_equicontinuous_at Filter.Tendsto.continuousAt_of_equicontinuousAt
+-/
 
+#print Equicontinuous.closure' /-
 /-- A version of `equicontinuous.closure` applicable to subsets of types which embed continuously
 into `X → α` with the product topology. It turns out we don't need any other condition on the
 embedding than continuity, but in practice this will mostly be applied to `fun_like` types where
@@ -423,20 +488,26 @@ theorem Equicontinuous.closure' {A : Set Y} {u : Y → X → α}
     (hA : Equicontinuous (u ∘ coe : A → X → α)) (hu : Continuous u) :
     Equicontinuous (u ∘ coe : closure A → X → α) := fun x => (hA x).closure' hu
 #align equicontinuous.closure' Equicontinuous.closure'
+-/
 
+#print Equicontinuous.closure /-
 /-- If a set of functions is equicontinuous, its closure for the product topology is also
 equicontinuous. -/
 theorem Equicontinuous.closure {A : Set <| X → α} (hA : A.Equicontinuous) :
     (closure A).Equicontinuous := fun x => (hA x).closure
 #align equicontinuous.closure Equicontinuous.closure
+-/
 
+#print Filter.Tendsto.continuous_of_equicontinuous_at /-
 /-- If `𝓕 : ι → X → α` tends to `f : X → α` *pointwise* along some nontrivial filter, and if the
 family `𝓕` is equicontinuous, then the limit is continuous. -/
 theorem Filter.Tendsto.continuous_of_equicontinuous_at {l : Filter ι} [l.ne_bot] {F : ι → X → α}
     {f : X → α} (h₁ : Tendsto F l (𝓝 f)) (h₂ : Equicontinuous F) : Continuous f :=
   continuous_iff_continuousAt.mpr fun x => h₁.continuousAt_of_equicontinuousAt (h₂ x)
 #align filter.tendsto.continuous_of_equicontinuous_at Filter.Tendsto.continuous_of_equicontinuous_at
+-/
 
+#print UniformEquicontinuous.closure' /-
 /-- A version of `uniform_equicontinuous.closure` applicable to subsets of types which embed
 continuously into `β → α` with the product topology. It turns out we don't need any other condition
 on the embedding than continuity, but in practice this will mostly be applied to `fun_like` types
@@ -454,14 +525,18 @@ theorem UniformEquicontinuous.closure' {A : Set Y} {u : Y → β → α}
   refine' (closure_minimal hxy <| hVclosed.preimage <| _).trans (preimage_mono hVU)
   exact Continuous.prod_mk ((continuous_apply x).comp hu) ((continuous_apply y).comp hu)
 #align uniform_equicontinuous.closure' UniformEquicontinuous.closure'
+-/
 
+#print UniformEquicontinuous.closure /-
 /-- If a set of functions is uniformly equicontinuous, its closure for the product topology is also
 uniformly equicontinuous. -/
 theorem UniformEquicontinuous.closure {A : Set <| β → α} (hA : A.UniformEquicontinuous) :
     (closure A).UniformEquicontinuous :=
   @UniformEquicontinuous.closure' _ _ _ _ _ _ _ id hA continuous_id
 #align uniform_equicontinuous.closure UniformEquicontinuous.closure
+-/
 
+#print Filter.Tendsto.uniformContinuous_of_uniformEquicontinuous /-
 /-- If `𝓕 : ι → β → α` tends to `f : β → α` *pointwise* along some nontrivial filter, and if the
 family `𝓕` is uniformly equicontinuous, then the limit is uniformly continuous. -/
 theorem Filter.Tendsto.uniformContinuous_of_uniformEquicontinuous {l : Filter ι} [l.ne_bot]
@@ -470,6 +545,7 @@ theorem Filter.Tendsto.uniformContinuous_of_uniformEquicontinuous {l : Filter ι
   (uniformEquicontinuous_at_iff_range.mp h₂).closure.UniformContinuous
     ⟨f, mem_closure_of_tendsto h₁ <| eventually_of_forall mem_range_self⟩
 #align filter.tendsto.uniform_continuous_of_uniform_equicontinuous Filter.Tendsto.uniformContinuous_of_uniformEquicontinuous
+-/
 
 end
 
Diff
@@ -146,7 +146,7 @@ protected abbrev Set.UniformEquicontinuous (H : Set <| β → α) : Prop :=
 #align set.uniform_equicontinuous Set.UniformEquicontinuous
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (x y «expr ∈ » V) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (x y «expr ∈ » V) -/
 /-- Reformulation of equicontinuity at `x₀` comparing two variables near `x₀` instead of comparing
 only one with `x₀`. -/
 theorem equicontinuousAt_iff_pair {F : ι → X → α} {x₀ : X} :
Diff
@@ -158,7 +158,7 @@ theorem equicontinuousAt_iff_pair {F : ι → X → α} {x₀ : X} :
     refine' ⟨_, H V hV, fun x hx y hy i => hVU (prod_mk_mem_compRel _ (hy i))⟩
     exact hVsymm.mk_mem_comm.mp (hx i)
   · rcases H U hU with ⟨V, hV, hVU⟩
-    filter_upwards [hV]using fun x hx i => hVU x₀ (mem_of_mem_nhds hV) x hx i
+    filter_upwards [hV] using fun x hx i => hVU x₀ (mem_of_mem_nhds hV) x hx i
 #align equicontinuous_at_iff_pair equicontinuousAt_iff_pair
 
 /-- Uniform equicontinuity implies equicontinuity. -/
@@ -392,7 +392,7 @@ theorem EquicontinuousAt.closure' {A : Set Y} {u : Y → X → α} {x₀ : X}
   by
   intro U hU
   rcases mem_uniformity_isClosed hU with ⟨V, hV, hVclosed, hVU⟩
-  filter_upwards [hA V hV]with x hx
+  filter_upwards [hA V hV] with x hx
   rw [SetCoe.forall] at *
   change A ⊆ (fun f => (u f x₀, u f x)) ⁻¹' V at hx 
   refine' (closure_minimal hx <| hVclosed.preimage <| _).trans (preimage_mono hVU)
Diff
@@ -171,7 +171,7 @@ theorem UniformEquicontinuous.equicontinuous {F : ι → β → α} (h : Uniform
 theorem EquicontinuousAt.continuousAt {F : ι → X → α} {x₀ : X} (h : EquicontinuousAt F x₀) (i : ι) :
     ContinuousAt (F i) x₀ := by
   intro U hU
-  rw [UniformSpace.mem_nhds_iff] at hU
+  rw [UniformSpace.mem_nhds_iff] at hU 
   rcases hU with ⟨V, hV₁, hV₂⟩
   exact mem_map.mpr (mem_of_superset (h V hV₁) fun x hx => hV₂ (hx i))
 #align equicontinuous_at.continuous_at EquicontinuousAt.continuousAt
@@ -289,7 +289,7 @@ theorem uniformEquicontinuous_iff_uniformContinuous {F : ι → β → α} :
 
 theorem Filter.HasBasis.equicontinuousAt_iff_left {κ : Type _} {p : κ → Prop} {s : κ → Set X}
     {F : ι → X → α} {x₀ : X} (hX : (𝓝 x₀).HasBasis p s) :
-    EquicontinuousAt F x₀ ↔ ∀ U ∈ 𝓤 α, ∃ (k : _)(_ : p k), ∀ x ∈ s k, ∀ i, (F i x₀, F i x) ∈ U :=
+    EquicontinuousAt F x₀ ↔ ∀ U ∈ 𝓤 α, ∃ (k : _) (_ : p k), ∀ x ∈ s k, ∀ i, (F i x₀, F i x) ∈ U :=
   by
   rw [equicontinuousAt_iff_continuousAt, ContinuousAt,
     hX.tendsto_iff (UniformFun.hasBasis_nhds ι α _)]
@@ -309,7 +309,7 @@ theorem Filter.HasBasis.equicontinuousAt_iff {κ₁ κ₂ : Type _} {p₁ : κ
     {p₂ : κ₂ → Prop} {s₂ : κ₂ → Set (α × α)} {F : ι → X → α} {x₀ : X} (hX : (𝓝 x₀).HasBasis p₁ s₁)
     (hα : (𝓤 α).HasBasis p₂ s₂) :
     EquicontinuousAt F x₀ ↔
-      ∀ k₂, p₂ k₂ → ∃ (k₁ : _)(_ : p₁ k₁), ∀ x ∈ s₁ k₁, ∀ i, (F i x₀, F i x) ∈ s₂ k₂ :=
+      ∀ k₂, p₂ k₂ → ∃ (k₁ : _) (_ : p₁ k₁), ∀ x ∈ s₁ k₁, ∀ i, (F i x₀, F i x) ∈ s₂ k₂ :=
   by
   rw [equicontinuousAt_iff_continuousAt, ContinuousAt,
     hX.tendsto_iff (UniformFun.hasBasis_nhds_of_basis ι α _ hα)]
@@ -319,7 +319,7 @@ theorem Filter.HasBasis.equicontinuousAt_iff {κ₁ κ₂ : Type _} {p₁ : κ
 theorem Filter.HasBasis.uniformEquicontinuous_iff_left {κ : Type _} {p : κ → Prop}
     {s : κ → Set (β × β)} {F : ι → β → α} (hβ : (𝓤 β).HasBasis p s) :
     UniformEquicontinuous F ↔
-      ∀ U ∈ 𝓤 α, ∃ (k : _)(_ : p k), ∀ x y, (x, y) ∈ s k → ∀ i, (F i x, F i y) ∈ U :=
+      ∀ U ∈ 𝓤 α, ∃ (k : _) (_ : p k), ∀ x y, (x, y) ∈ s k → ∀ i, (F i x, F i y) ∈ U :=
   by
   rw [uniformEquicontinuous_iff_uniformContinuous, UniformContinuous,
     hβ.tendsto_iff (UniformFun.hasBasis_uniformity ι α)]
@@ -340,7 +340,7 @@ theorem Filter.HasBasis.uniformEquicontinuous_iff {κ₁ κ₂ : Type _} {p₁ :
     {s₁ : κ₁ → Set (β × β)} {p₂ : κ₂ → Prop} {s₂ : κ₂ → Set (α × α)} {F : ι → β → α}
     (hβ : (𝓤 β).HasBasis p₁ s₁) (hα : (𝓤 α).HasBasis p₂ s₂) :
     UniformEquicontinuous F ↔
-      ∀ k₂, p₂ k₂ → ∃ (k₁ : _)(_ : p₁ k₁), ∀ x y, (x, y) ∈ s₁ k₁ → ∀ i, (F i x, F i y) ∈ s₂ k₂ :=
+      ∀ k₂, p₂ k₂ → ∃ (k₁ : _) (_ : p₁ k₁), ∀ x y, (x, y) ∈ s₁ k₁ → ∀ i, (F i x, F i y) ∈ s₂ k₂ :=
   by
   rw [uniformEquicontinuous_iff_uniformContinuous, UniformContinuous,
     hβ.tendsto_iff (UniformFun.hasBasis_uniformity_of_basis ι α hα)]
@@ -394,7 +394,7 @@ theorem EquicontinuousAt.closure' {A : Set Y} {u : Y → X → α} {x₀ : X}
   rcases mem_uniformity_isClosed hU with ⟨V, hV, hVclosed, hVU⟩
   filter_upwards [hA V hV]with x hx
   rw [SetCoe.forall] at *
-  change A ⊆ (fun f => (u f x₀, u f x)) ⁻¹' V at hx
+  change A ⊆ (fun f => (u f x₀, u f x)) ⁻¹' V at hx 
   refine' (closure_minimal hx <| hVclosed.preimage <| _).trans (preimage_mono hVU)
   exact Continuous.prod_mk ((continuous_apply x₀).comp hu) ((continuous_apply x).comp hu)
 #align equicontinuous_at.closure' EquicontinuousAt.closure'
@@ -450,7 +450,7 @@ theorem UniformEquicontinuous.closure' {A : Set Y} {u : Y → β → α}
   filter_upwards [hA V hV]
   rintro ⟨x, y⟩ hxy
   rw [SetCoe.forall] at *
-  change A ⊆ (fun f => (u f x, u f y)) ⁻¹' V at hxy
+  change A ⊆ (fun f => (u f x, u f y)) ⁻¹' V at hxy 
   refine' (closure_minimal hxy <| hVclosed.preimage <| _).trans (preimage_mono hVU)
   exact Continuous.prod_mk ((continuous_apply x).comp hu) ((continuous_apply y).comp hu)
 #align uniform_equicontinuous.closure' UniformEquicontinuous.closure'
Diff
@@ -91,7 +91,7 @@ section
 
 open UniformSpace Filter Set
 
-open uniformity Topology UniformConvergence
+open scoped uniformity Topology UniformConvergence
 
 variable {ι κ X Y Z α β γ 𝓕 : Type _} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z]
   [UniformSpace α] [UniformSpace β] [UniformSpace γ]
Diff
@@ -146,12 +146,6 @@ protected abbrev Set.UniformEquicontinuous (H : Set <| β → α) : Prop :=
 #align set.uniform_equicontinuous Set.UniformEquicontinuous
 -/
 
-/- warning: equicontinuous_at_iff_pair -> equicontinuousAt_iff_pair is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {X : Type.{u2}} {α : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u3} α] {F : ι -> X -> α} {x₀ : X}, Iff (EquicontinuousAt.{u1, u2, u3} ι X α _inst_1 _inst_4 F x₀) (forall (U : Set.{u3} (Prod.{u3, u3} α α)), (Membership.Mem.{u3, u3} (Set.{u3} (Prod.{u3, u3} α α)) (Filter.{u3} (Prod.{u3, u3} α α)) (Filter.hasMem.{u3} (Prod.{u3, u3} α α)) U (uniformity.{u3} α _inst_4)) -> (Exists.{succ u2} (Set.{u2} X) (fun (V : Set.{u2} X) => Exists.{0} (Membership.Mem.{u2, u2} (Set.{u2} X) (Filter.{u2} X) (Filter.hasMem.{u2} X) V (nhds.{u2} X _inst_1 x₀)) (fun (H : Membership.Mem.{u2, u2} (Set.{u2} X) (Filter.{u2} X) (Filter.hasMem.{u2} X) V (nhds.{u2} X _inst_1 x₀)) => forall (x : X), (Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) x V) -> (forall (y : X), (Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) y V) -> (forall (i : ι), Membership.Mem.{u3, u3} (Prod.{u3, u3} α α) (Set.{u3} (Prod.{u3, u3} α α)) (Set.hasMem.{u3} (Prod.{u3, u3} α α)) (Prod.mk.{u3, u3} α α (F i x) (F i y)) U))))))
-but is expected to have type
-  forall {ι : Type.{u3}} {X : Type.{u2}} {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u1} α] {F : ι -> X -> α} {x₀ : X}, Iff (EquicontinuousAt.{u3, u2, u1} ι X α _inst_1 _inst_4 F x₀) (forall (U : Set.{u1} (Prod.{u1, u1} α α)), (Membership.mem.{u1, u1} (Set.{u1} (Prod.{u1, u1} α α)) (Filter.{u1} (Prod.{u1, u1} α α)) (instMembershipSetFilter.{u1} (Prod.{u1, u1} α α)) U (uniformity.{u1} α _inst_4)) -> (Exists.{succ u2} (Set.{u2} X) (fun (V : Set.{u2} X) => And (Membership.mem.{u2, u2} (Set.{u2} X) (Filter.{u2} X) (instMembershipSetFilter.{u2} X) V (nhds.{u2} X _inst_1 x₀)) (forall (x : X), (Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) x V) -> (forall (y : X), (Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) y V) -> (forall (i : ι), Membership.mem.{u1, u1} (Prod.{u1, u1} α α) (Set.{u1} (Prod.{u1, u1} α α)) (Set.instMembershipSet.{u1} (Prod.{u1, u1} α α)) (Prod.mk.{u1, u1} α α (F i x) (F i y)) U))))))
-Case conversion may be inaccurate. Consider using '#align equicontinuous_at_iff_pair equicontinuousAt_iff_pairₓ'. -/
 /- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (x y «expr ∈ » V) -/
 /-- Reformulation of equicontinuity at `x₀` comparing two variables near `x₀` instead of comparing
 only one with `x₀`. -/
@@ -167,24 +161,12 @@ theorem equicontinuousAt_iff_pair {F : ι → X → α} {x₀ : X} :
     filter_upwards [hV]using fun x hx i => hVU x₀ (mem_of_mem_nhds hV) x hx i
 #align equicontinuous_at_iff_pair equicontinuousAt_iff_pair
 
-/- warning: uniform_equicontinuous.equicontinuous -> UniformEquicontinuous.equicontinuous is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u3} β] {F : ι -> β -> α}, (UniformEquicontinuous.{u1, u2, u3} ι α β _inst_4 _inst_5 F) -> (Equicontinuous.{u1, u3, u2} ι β α (UniformSpace.toTopologicalSpace.{u3} β _inst_5) _inst_4 F)
-but is expected to have type
-  forall {ι : Type.{u3}} {α : Type.{u2}} {β : Type.{u1}} [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u1} β] {F : ι -> β -> α}, (UniformEquicontinuous.{u3, u2, u1} ι α β _inst_4 _inst_5 F) -> (Equicontinuous.{u3, u1, u2} ι β α (UniformSpace.toTopologicalSpace.{u1} β _inst_5) _inst_4 F)
-Case conversion may be inaccurate. Consider using '#align uniform_equicontinuous.equicontinuous UniformEquicontinuous.equicontinuousₓ'. -/
 /-- Uniform equicontinuity implies equicontinuity. -/
 theorem UniformEquicontinuous.equicontinuous {F : ι → β → α} (h : UniformEquicontinuous F) :
     Equicontinuous F := fun x₀ U hU =>
   mem_of_superset (ball_mem_nhds x₀ (h U hU)) fun x hx i => hx i
 #align uniform_equicontinuous.equicontinuous UniformEquicontinuous.equicontinuous
 
-/- warning: equicontinuous_at.continuous_at -> EquicontinuousAt.continuousAt is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {X : Type.{u2}} {α : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u3} α] {F : ι -> X -> α} {x₀ : X}, (EquicontinuousAt.{u1, u2, u3} ι X α _inst_1 _inst_4 F x₀) -> (forall (i : ι), ContinuousAt.{u2, u3} X α _inst_1 (UniformSpace.toTopologicalSpace.{u3} α _inst_4) (F i) x₀)
-but is expected to have type
-  forall {ι : Type.{u3}} {X : Type.{u2}} {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u1} α] {F : ι -> X -> α} {x₀ : X}, (EquicontinuousAt.{u3, u2, u1} ι X α _inst_1 _inst_4 F x₀) -> (forall (i : ι), ContinuousAt.{u2, u1} X α _inst_1 (UniformSpace.toTopologicalSpace.{u1} α _inst_4) (F i) x₀)
-Case conversion may be inaccurate. Consider using '#align equicontinuous_at.continuous_at EquicontinuousAt.continuousAtₓ'. -/
 /-- Each function of a family equicontinuous at `x₀` is continuous at `x₀`. -/
 theorem EquicontinuousAt.continuousAt {F : ι → X → α} {x₀ : X} (h : EquicontinuousAt F x₀) (i : ι) :
     ContinuousAt (F i) x₀ := by
@@ -194,135 +176,63 @@ theorem EquicontinuousAt.continuousAt {F : ι → X → α} {x₀ : X} (h : Equi
   exact mem_map.mpr (mem_of_superset (h V hV₁) fun x hx => hV₂ (hx i))
 #align equicontinuous_at.continuous_at EquicontinuousAt.continuousAt
 
-/- warning: set.equicontinuous_at.continuous_at_of_mem -> Set.EquicontinuousAt.continuousAt_of_mem is a dubious translation:
-lean 3 declaration is
-  forall {X : Type.{u1}} {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : UniformSpace.{u2} α] {H : Set.{max u1 u2} (X -> α)} {x₀ : X}, (Set.EquicontinuousAt.{u1, u2} X α _inst_1 _inst_4 H x₀) -> (forall {f : X -> α}, (Membership.Mem.{max u1 u2, max u1 u2} (X -> α) (Set.{max u1 u2} (X -> α)) (Set.hasMem.{max u1 u2} (X -> α)) f H) -> (ContinuousAt.{u1, u2} X α _inst_1 (UniformSpace.toTopologicalSpace.{u2} α _inst_4) f x₀))
-but is expected to have type
-  forall {X : Type.{u2}} {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u1} α] {H : Set.{max u2 u1} (X -> α)} {x₀ : X}, (Set.EquicontinuousAt.{u2, u1} X α _inst_1 _inst_4 H x₀) -> (forall {f : X -> α}, (Membership.mem.{max u2 u1, max u2 u1} (X -> α) (Set.{max u2 u1} (X -> α)) (Set.instMembershipSet.{max u2 u1} (X -> α)) f H) -> (ContinuousAt.{u2, u1} X α _inst_1 (UniformSpace.toTopologicalSpace.{u1} α _inst_4) f x₀))
-Case conversion may be inaccurate. Consider using '#align set.equicontinuous_at.continuous_at_of_mem Set.EquicontinuousAt.continuousAt_of_memₓ'. -/
 protected theorem Set.EquicontinuousAt.continuousAt_of_mem {H : Set <| X → α} {x₀ : X}
     (h : H.EquicontinuousAt x₀) {f : X → α} (hf : f ∈ H) : ContinuousAt f x₀ :=
   h.ContinuousAt ⟨f, hf⟩
 #align set.equicontinuous_at.continuous_at_of_mem Set.EquicontinuousAt.continuousAt_of_mem
 
-/- warning: equicontinuous.continuous -> Equicontinuous.continuous is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {X : Type.{u2}} {α : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u3} α] {F : ι -> X -> α}, (Equicontinuous.{u1, u2, u3} ι X α _inst_1 _inst_4 F) -> (forall (i : ι), Continuous.{u2, u3} X α _inst_1 (UniformSpace.toTopologicalSpace.{u3} α _inst_4) (F i))
-but is expected to have type
-  forall {ι : Type.{u3}} {X : Type.{u2}} {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u1} α] {F : ι -> X -> α}, (Equicontinuous.{u3, u2, u1} ι X α _inst_1 _inst_4 F) -> (forall (i : ι), Continuous.{u2, u1} X α _inst_1 (UniformSpace.toTopologicalSpace.{u1} α _inst_4) (F i))
-Case conversion may be inaccurate. Consider using '#align equicontinuous.continuous Equicontinuous.continuousₓ'. -/
 /-- Each function of an equicontinuous family is continuous. -/
 theorem Equicontinuous.continuous {F : ι → X → α} (h : Equicontinuous F) (i : ι) :
     Continuous (F i) :=
   continuous_iff_continuousAt.mpr fun x => (h x).ContinuousAt i
 #align equicontinuous.continuous Equicontinuous.continuous
 
-/- warning: set.equicontinuous.continuous_of_mem -> Set.Equicontinuous.continuous_of_mem is a dubious translation:
-lean 3 declaration is
-  forall {X : Type.{u1}} {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : UniformSpace.{u2} α] {H : Set.{max u1 u2} (X -> α)}, (Set.Equicontinuous.{u1, u2} X α _inst_1 _inst_4 H) -> (forall {f : X -> α}, (Membership.Mem.{max u1 u2, max u1 u2} (X -> α) (Set.{max u1 u2} (X -> α)) (Set.hasMem.{max u1 u2} (X -> α)) f H) -> (Continuous.{u1, u2} X α _inst_1 (UniformSpace.toTopologicalSpace.{u2} α _inst_4) f))
-but is expected to have type
-  forall {X : Type.{u2}} {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u1} α] {H : Set.{max u2 u1} (X -> α)}, (Set.Equicontinuous.{u2, u1} X α _inst_1 _inst_4 H) -> (forall {f : X -> α}, (Membership.mem.{max u2 u1, max u2 u1} (X -> α) (Set.{max u2 u1} (X -> α)) (Set.instMembershipSet.{max u2 u1} (X -> α)) f H) -> (Continuous.{u2, u1} X α _inst_1 (UniformSpace.toTopologicalSpace.{u1} α _inst_4) f))
-Case conversion may be inaccurate. Consider using '#align set.equicontinuous.continuous_of_mem Set.Equicontinuous.continuous_of_memₓ'. -/
 protected theorem Set.Equicontinuous.continuous_of_mem {H : Set <| X → α} (h : H.Equicontinuous)
     {f : X → α} (hf : f ∈ H) : Continuous f :=
   h.Continuous ⟨f, hf⟩
 #align set.equicontinuous.continuous_of_mem Set.Equicontinuous.continuous_of_mem
 
-/- warning: uniform_equicontinuous.uniform_continuous -> UniformEquicontinuous.uniformContinuous is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u3} β] {F : ι -> β -> α}, (UniformEquicontinuous.{u1, u2, u3} ι α β _inst_4 _inst_5 F) -> (forall (i : ι), UniformContinuous.{u3, u2} β α _inst_5 _inst_4 (F i))
-but is expected to have type
-  forall {ι : Type.{u3}} {α : Type.{u2}} {β : Type.{u1}} [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u1} β] {F : ι -> β -> α}, (UniformEquicontinuous.{u3, u2, u1} ι α β _inst_4 _inst_5 F) -> (forall (i : ι), UniformContinuous.{u1, u2} β α _inst_5 _inst_4 (F i))
-Case conversion may be inaccurate. Consider using '#align uniform_equicontinuous.uniform_continuous UniformEquicontinuous.uniformContinuousₓ'. -/
 /-- Each function of a uniformly equicontinuous family is uniformly continuous. -/
 theorem UniformEquicontinuous.uniformContinuous {F : ι → β → α} (h : UniformEquicontinuous F)
     (i : ι) : UniformContinuous (F i) := fun U hU =>
   mem_map.mpr (mem_of_superset (h U hU) fun xy hxy => hxy i)
 #align uniform_equicontinuous.uniform_continuous UniformEquicontinuous.uniformContinuous
 
-/- warning: set.uniform_equicontinuous.uniform_continuous_of_mem -> Set.UniformEquicontinuous.uniformContinuous_of_mem is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_4 : UniformSpace.{u1} α] [_inst_5 : UniformSpace.{u2} β] {H : Set.{max u2 u1} (β -> α)}, (Set.UniformEquicontinuous.{u1, u2} α β _inst_4 _inst_5 H) -> (forall {f : β -> α}, (Membership.Mem.{max u2 u1, max u2 u1} (β -> α) (Set.{max u2 u1} (β -> α)) (Set.hasMem.{max u2 u1} (β -> α)) f H) -> (UniformContinuous.{u2, u1} β α _inst_5 _inst_4 f))
-but is expected to have type
-  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u1} β] {H : Set.{max u2 u1} (β -> α)}, (Set.UniformEquicontinuous.{u2, u1} α β _inst_4 _inst_5 H) -> (forall {f : β -> α}, (Membership.mem.{max u2 u1, max u2 u1} (β -> α) (Set.{max u2 u1} (β -> α)) (Set.instMembershipSet.{max u2 u1} (β -> α)) f H) -> (UniformContinuous.{u1, u2} β α _inst_5 _inst_4 f))
-Case conversion may be inaccurate. Consider using '#align set.uniform_equicontinuous.uniform_continuous_of_mem Set.UniformEquicontinuous.uniformContinuous_of_memₓ'. -/
 protected theorem Set.UniformEquicontinuous.uniformContinuous_of_mem {H : Set <| β → α}
     (h : H.UniformEquicontinuous) {f : β → α} (hf : f ∈ H) : UniformContinuous f :=
   h.UniformContinuous ⟨f, hf⟩
 #align set.uniform_equicontinuous.uniform_continuous_of_mem Set.UniformEquicontinuous.uniformContinuous_of_mem
 
-/- warning: equicontinuous_at.comp -> EquicontinuousAt.comp is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {κ : Type.{u2}} {X : Type.{u3}} {α : Type.{u4}} [_inst_1 : TopologicalSpace.{u3} X] [_inst_4 : UniformSpace.{u4} α] {F : ι -> X -> α} {x₀ : X}, (EquicontinuousAt.{u1, u3, u4} ι X α _inst_1 _inst_4 F x₀) -> (forall (u : κ -> ι), EquicontinuousAt.{u2, u3, u4} κ X α _inst_1 _inst_4 (Function.comp.{succ u2, succ u1, max (succ u3) (succ u4)} κ ι (X -> α) F u) x₀)
-but is expected to have type
-  forall {ι : Type.{u4}} {κ : Type.{u1}} {X : Type.{u3}} {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} X] [_inst_4 : UniformSpace.{u2} α] {F : ι -> X -> α} {x₀ : X}, (EquicontinuousAt.{u4, u3, u2} ι X α _inst_1 _inst_4 F x₀) -> (forall (u : κ -> ι), EquicontinuousAt.{u1, u3, u2} κ X α _inst_1 _inst_4 (Function.comp.{succ u1, succ u4, max (succ u2) (succ u3)} κ ι (X -> α) F u) x₀)
-Case conversion may be inaccurate. Consider using '#align equicontinuous_at.comp EquicontinuousAt.compₓ'. -/
 /-- Taking sub-families preserves equicontinuity at a point. -/
 theorem EquicontinuousAt.comp {F : ι → X → α} {x₀ : X} (h : EquicontinuousAt F x₀) (u : κ → ι) :
     EquicontinuousAt (F ∘ u) x₀ := fun U hU => (h U hU).mono fun x H k => H (u k)
 #align equicontinuous_at.comp EquicontinuousAt.comp
 
-/- warning: set.equicontinuous_at.mono -> Set.EquicontinuousAt.mono is a dubious translation:
-lean 3 declaration is
-  forall {X : Type.{u1}} {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : UniformSpace.{u2} α] {H : Set.{max u1 u2} (X -> α)} {H' : Set.{max u1 u2} (X -> α)} {x₀ : X}, (Set.EquicontinuousAt.{u1, u2} X α _inst_1 _inst_4 H x₀) -> (HasSubset.Subset.{max u1 u2} (Set.{max u1 u2} (X -> α)) (Set.hasSubset.{max u1 u2} (X -> α)) H' H) -> (Set.EquicontinuousAt.{u1, u2} X α _inst_1 _inst_4 H' x₀)
-but is expected to have type
-  forall {X : Type.{u2}} {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u1} α] {H : Set.{max u2 u1} (X -> α)} {H' : Set.{max u2 u1} (X -> α)} {x₀ : X}, (Set.EquicontinuousAt.{u2, u1} X α _inst_1 _inst_4 H x₀) -> (HasSubset.Subset.{max u2 u1} (Set.{max u2 u1} (X -> α)) (Set.instHasSubsetSet.{max u2 u1} (X -> α)) H' H) -> (Set.EquicontinuousAt.{u2, u1} X α _inst_1 _inst_4 H' x₀)
-Case conversion may be inaccurate. Consider using '#align set.equicontinuous_at.mono Set.EquicontinuousAt.monoₓ'. -/
 protected theorem Set.EquicontinuousAt.mono {H H' : Set <| X → α} {x₀ : X}
     (h : H.EquicontinuousAt x₀) (hH : H' ⊆ H) : H'.EquicontinuousAt x₀ :=
   h.comp (inclusion hH)
 #align set.equicontinuous_at.mono Set.EquicontinuousAt.mono
 
-/- warning: equicontinuous.comp -> Equicontinuous.comp is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {κ : Type.{u2}} {X : Type.{u3}} {α : Type.{u4}} [_inst_1 : TopologicalSpace.{u3} X] [_inst_4 : UniformSpace.{u4} α] {F : ι -> X -> α}, (Equicontinuous.{u1, u3, u4} ι X α _inst_1 _inst_4 F) -> (forall (u : κ -> ι), Equicontinuous.{u2, u3, u4} κ X α _inst_1 _inst_4 (Function.comp.{succ u2, succ u1, max (succ u3) (succ u4)} κ ι (X -> α) F u))
-but is expected to have type
-  forall {ι : Type.{u4}} {κ : Type.{u1}} {X : Type.{u3}} {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} X] [_inst_4 : UniformSpace.{u2} α] {F : ι -> X -> α}, (Equicontinuous.{u4, u3, u2} ι X α _inst_1 _inst_4 F) -> (forall (u : κ -> ι), Equicontinuous.{u1, u3, u2} κ X α _inst_1 _inst_4 (Function.comp.{succ u1, succ u4, max (succ u2) (succ u3)} κ ι (X -> α) F u))
-Case conversion may be inaccurate. Consider using '#align equicontinuous.comp Equicontinuous.compₓ'. -/
 /-- Taking sub-families preserves equicontinuity. -/
 theorem Equicontinuous.comp {F : ι → X → α} (h : Equicontinuous F) (u : κ → ι) :
     Equicontinuous (F ∘ u) := fun x => (h x).comp u
 #align equicontinuous.comp Equicontinuous.comp
 
-/- warning: set.equicontinuous.mono -> Set.Equicontinuous.mono is a dubious translation:
-lean 3 declaration is
-  forall {X : Type.{u1}} {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : UniformSpace.{u2} α] {H : Set.{max u1 u2} (X -> α)} {H' : Set.{max u1 u2} (X -> α)}, (Set.Equicontinuous.{u1, u2} X α _inst_1 _inst_4 H) -> (HasSubset.Subset.{max u1 u2} (Set.{max u1 u2} (X -> α)) (Set.hasSubset.{max u1 u2} (X -> α)) H' H) -> (Set.Equicontinuous.{u1, u2} X α _inst_1 _inst_4 H')
-but is expected to have type
-  forall {X : Type.{u2}} {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u1} α] {H : Set.{max u2 u1} (X -> α)} {H' : Set.{max u2 u1} (X -> α)}, (Set.Equicontinuous.{u2, u1} X α _inst_1 _inst_4 H) -> (HasSubset.Subset.{max u2 u1} (Set.{max u2 u1} (X -> α)) (Set.instHasSubsetSet.{max u2 u1} (X -> α)) H' H) -> (Set.Equicontinuous.{u2, u1} X α _inst_1 _inst_4 H')
-Case conversion may be inaccurate. Consider using '#align set.equicontinuous.mono Set.Equicontinuous.monoₓ'. -/
 protected theorem Set.Equicontinuous.mono {H H' : Set <| X → α} (h : H.Equicontinuous)
     (hH : H' ⊆ H) : H'.Equicontinuous :=
   h.comp (inclusion hH)
 #align set.equicontinuous.mono Set.Equicontinuous.mono
 
-/- warning: uniform_equicontinuous.comp -> UniformEquicontinuous.comp is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {κ : Type.{u2}} {α : Type.{u3}} {β : Type.{u4}} [_inst_4 : UniformSpace.{u3} α] [_inst_5 : UniformSpace.{u4} β] {F : ι -> β -> α}, (UniformEquicontinuous.{u1, u3, u4} ι α β _inst_4 _inst_5 F) -> (forall (u : κ -> ι), UniformEquicontinuous.{u2, u3, u4} κ α β _inst_4 _inst_5 (Function.comp.{succ u2, succ u1, max (succ u4) (succ u3)} κ ι (β -> α) F u))
-but is expected to have type
-  forall {ι : Type.{u4}} {κ : Type.{u1}} {α : Type.{u3}} {β : Type.{u2}} [_inst_4 : UniformSpace.{u3} α] [_inst_5 : UniformSpace.{u2} β] {F : ι -> β -> α}, (UniformEquicontinuous.{u4, u3, u2} ι α β _inst_4 _inst_5 F) -> (forall (u : κ -> ι), UniformEquicontinuous.{u1, u3, u2} κ α β _inst_4 _inst_5 (Function.comp.{succ u1, succ u4, max (succ u2) (succ u3)} κ ι (β -> α) F u))
-Case conversion may be inaccurate. Consider using '#align uniform_equicontinuous.comp UniformEquicontinuous.compₓ'. -/
 /-- Taking sub-families preserves uniform equicontinuity. -/
 theorem UniformEquicontinuous.comp {F : ι → β → α} (h : UniformEquicontinuous F) (u : κ → ι) :
     UniformEquicontinuous (F ∘ u) := fun U hU => (h U hU).mono fun x H k => H (u k)
 #align uniform_equicontinuous.comp UniformEquicontinuous.comp
 
-/- warning: set.uniform_equicontinuous.mono -> Set.UniformEquicontinuous.mono is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_4 : UniformSpace.{u1} α] [_inst_5 : UniformSpace.{u2} β] {H : Set.{max u2 u1} (β -> α)} {H' : Set.{max u2 u1} (β -> α)}, (Set.UniformEquicontinuous.{u1, u2} α β _inst_4 _inst_5 H) -> (HasSubset.Subset.{max u2 u1} (Set.{max u2 u1} (β -> α)) (Set.hasSubset.{max u2 u1} (β -> α)) H' H) -> (Set.UniformEquicontinuous.{u1, u2} α β _inst_4 _inst_5 H')
-but is expected to have type
-  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u1} β] {H : Set.{max u2 u1} (β -> α)} {H' : Set.{max u2 u1} (β -> α)}, (Set.UniformEquicontinuous.{u2, u1} α β _inst_4 _inst_5 H) -> (HasSubset.Subset.{max u2 u1} (Set.{max u2 u1} (β -> α)) (Set.instHasSubsetSet.{max u2 u1} (β -> α)) H' H) -> (Set.UniformEquicontinuous.{u2, u1} α β _inst_4 _inst_5 H')
-Case conversion may be inaccurate. Consider using '#align set.uniform_equicontinuous.mono Set.UniformEquicontinuous.monoₓ'. -/
 protected theorem Set.UniformEquicontinuous.mono {H H' : Set <| β → α} (h : H.UniformEquicontinuous)
     (hH : H' ⊆ H) : H'.UniformEquicontinuous :=
   h.comp (inclusion hH)
 #align set.uniform_equicontinuous.mono Set.UniformEquicontinuous.mono
 
-/- warning: equicontinuous_at_iff_range -> equicontinuousAt_iff_range is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {X : Type.{u2}} {α : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u3} α] {F : ι -> X -> α} {x₀ : X}, Iff (EquicontinuousAt.{u1, u2, u3} ι X α _inst_1 _inst_4 F x₀) (EquicontinuousAt.{max u2 u3, u2, u3} (coeSort.{succ (max u2 u3), succ (succ (max u2 u3))} (Set.{max u2 u3} (X -> α)) Type.{max u2 u3} (Set.hasCoeToSort.{max u2 u3} (X -> α)) (Set.range.{max u2 u3, succ u1} (X -> α) ι F)) X α _inst_1 _inst_4 ((fun (a : Type.{max u2 u3}) (b : Sort.{max (succ u2) (succ u3)}) [self : HasLiftT.{succ (max u2 u3), max (succ u2) (succ u3)} a b] => self.0) (coeSort.{succ (max u2 u3), succ (succ (max u2 u3))} (Set.{max u2 u3} (X -> α)) Type.{max u2 u3} (Set.hasCoeToSort.{max u2 u3} (X -> α)) (Set.range.{max u2 u3, succ u1} (X -> α) ι F)) (X -> α) (HasLiftT.mk.{succ (max u2 u3), max (succ u2) (succ u3)} (coeSort.{succ (max u2 u3), succ (succ (max u2 u3))} (Set.{max u2 u3} (X -> α)) Type.{max u2 u3} (Set.hasCoeToSort.{max u2 u3} (X -> α)) (Set.range.{max u2 u3, succ u1} (X -> α) ι F)) (X -> α) (CoeTCₓ.coe.{succ (max u2 u3), max (succ u2) (succ u3)} (coeSort.{succ (max u2 u3), succ (succ (max u2 u3))} (Set.{max u2 u3} (X -> α)) Type.{max u2 u3} (Set.hasCoeToSort.{max u2 u3} (X -> α)) (Set.range.{max u2 u3, succ u1} (X -> α) ι F)) (X -> α) (coeBase.{succ (max u2 u3), max (succ u2) (succ u3)} (coeSort.{succ (max u2 u3), succ (succ (max u2 u3))} (Set.{max u2 u3} (X -> α)) Type.{max u2 u3} (Set.hasCoeToSort.{max u2 u3} (X -> α)) (Set.range.{max u2 u3, succ u1} (X -> α) ι F)) (X -> α) (coeSubtype.{max (succ u2) (succ u3)} (X -> α) (fun (x : X -> α) => Membership.Mem.{max u2 u3, max u2 u3} (X -> α) (Set.{max u2 u3} (X -> α)) (Set.hasMem.{max u2 u3} (X -> α)) x (Set.range.{max u2 u3, succ u1} (X -> α) ι F))))))) x₀)
-but is expected to have type
-  forall {ι : Type.{u3}} {X : Type.{u2}} {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u1} α] {F : ι -> X -> α} {x₀ : X}, Iff (EquicontinuousAt.{u3, u2, u1} ι X α _inst_1 _inst_4 F x₀) (EquicontinuousAt.{max u2 u1, u2, u1} (Subtype.{succ (max u2 u1)} (X -> α) (fun (x : X -> α) => Membership.mem.{max u2 u1, max u2 u1} (X -> α) (Set.{max u2 u1} (X -> α)) (Set.instMembershipSet.{max u2 u1} (X -> α)) x (Set.range.{max u2 u1, succ u3} (X -> α) ι F))) X α _inst_1 _inst_4 (Subtype.val.{succ (max u2 u1)} (X -> α) (fun (x : X -> α) => Membership.mem.{max u2 u1, max u2 u1} (X -> α) (Set.{max u2 u1} (X -> α)) (Set.instMembershipSet.{max u2 u1} (X -> α)) x (Set.range.{max u2 u1, succ u3} (X -> α) ι F))) x₀)
-Case conversion may be inaccurate. Consider using '#align equicontinuous_at_iff_range equicontinuousAt_iff_rangeₓ'. -/
 /-- A family `𝓕 : ι → X → α` is equicontinuous at `x₀` iff `range 𝓕` is equicontinuous at `x₀`,
 i.e the family `coe : range F → X → α` is equicontinuous at `x₀`. -/
 theorem equicontinuousAt_iff_range {F : ι → X → α} {x₀ : X} :
@@ -331,12 +241,6 @@ theorem equicontinuousAt_iff_range {F : ι → X → α} {x₀ : X} :
     h.comp (rangeFactorization F)⟩
 #align equicontinuous_at_iff_range equicontinuousAt_iff_range
 
-/- warning: equicontinuous_iff_range -> equicontinuous_iff_range is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {X : Type.{u2}} {α : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u3} α] {F : ι -> X -> α}, Iff (Equicontinuous.{u1, u2, u3} ι X α _inst_1 _inst_4 F) (Equicontinuous.{max u2 u3, u2, u3} (coeSort.{succ (max u2 u3), succ (succ (max u2 u3))} (Set.{max u2 u3} (X -> α)) Type.{max u2 u3} (Set.hasCoeToSort.{max u2 u3} (X -> α)) (Set.range.{max u2 u3, succ u1} (X -> α) ι F)) X α _inst_1 _inst_4 ((fun (a : Type.{max u2 u3}) (b : Sort.{max (succ u2) (succ u3)}) [self : HasLiftT.{succ (max u2 u3), max (succ u2) (succ u3)} a b] => self.0) (coeSort.{succ (max u2 u3), succ (succ (max u2 u3))} (Set.{max u2 u3} (X -> α)) Type.{max u2 u3} (Set.hasCoeToSort.{max u2 u3} (X -> α)) (Set.range.{max u2 u3, succ u1} (X -> α) ι F)) (X -> α) (HasLiftT.mk.{succ (max u2 u3), max (succ u2) (succ u3)} (coeSort.{succ (max u2 u3), succ (succ (max u2 u3))} (Set.{max u2 u3} (X -> α)) Type.{max u2 u3} (Set.hasCoeToSort.{max u2 u3} (X -> α)) (Set.range.{max u2 u3, succ u1} (X -> α) ι F)) (X -> α) (CoeTCₓ.coe.{succ (max u2 u3), max (succ u2) (succ u3)} (coeSort.{succ (max u2 u3), succ (succ (max u2 u3))} (Set.{max u2 u3} (X -> α)) Type.{max u2 u3} (Set.hasCoeToSort.{max u2 u3} (X -> α)) (Set.range.{max u2 u3, succ u1} (X -> α) ι F)) (X -> α) (coeBase.{succ (max u2 u3), max (succ u2) (succ u3)} (coeSort.{succ (max u2 u3), succ (succ (max u2 u3))} (Set.{max u2 u3} (X -> α)) Type.{max u2 u3} (Set.hasCoeToSort.{max u2 u3} (X -> α)) (Set.range.{max u2 u3, succ u1} (X -> α) ι F)) (X -> α) (coeSubtype.{max (succ u2) (succ u3)} (X -> α) (fun (x : X -> α) => Membership.Mem.{max u2 u3, max u2 u3} (X -> α) (Set.{max u2 u3} (X -> α)) (Set.hasMem.{max u2 u3} (X -> α)) x (Set.range.{max u2 u3, succ u1} (X -> α) ι F))))))))
-but is expected to have type
-  forall {ι : Type.{u3}} {X : Type.{u2}} {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u1} α] {F : ι -> X -> α}, Iff (Equicontinuous.{u3, u2, u1} ι X α _inst_1 _inst_4 F) (Equicontinuous.{max u2 u1, u2, u1} (Subtype.{succ (max u2 u1)} (X -> α) (fun (x : X -> α) => Membership.mem.{max u2 u1, max u2 u1} (X -> α) (Set.{max u2 u1} (X -> α)) (Set.instMembershipSet.{max u2 u1} (X -> α)) x (Set.range.{max u2 u1, succ u3} (X -> α) ι F))) X α _inst_1 _inst_4 (Subtype.val.{succ (max u2 u1)} (X -> α) (fun (x : X -> α) => Membership.mem.{max u2 u1, max u2 u1} (X -> α) (Set.{max u2 u1} (X -> α)) (Set.instMembershipSet.{max u2 u1} (X -> α)) x (Set.range.{max u2 u1, succ u3} (X -> α) ι F))))
-Case conversion may be inaccurate. Consider using '#align equicontinuous_iff_range equicontinuous_iff_rangeₓ'. -/
 /-- A family `𝓕 : ι → X → α` is equicontinuous iff `range 𝓕` is equicontinuous,
 i.e the family `coe : range F → X → α` is equicontinuous. -/
 theorem equicontinuous_iff_range {F : ι → X → α} :
@@ -344,12 +248,6 @@ theorem equicontinuous_iff_range {F : ι → X → α} :
   forall_congr' fun x₀ => equicontinuousAt_iff_range
 #align equicontinuous_iff_range equicontinuous_iff_range
 
-/- warning: uniform_equicontinuous_at_iff_range -> uniformEquicontinuous_at_iff_range is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u3} β] {F : ι -> β -> α}, Iff (UniformEquicontinuous.{u1, u2, u3} ι α β _inst_4 _inst_5 F) (UniformEquicontinuous.{max u3 u2, u2, u3} (coeSort.{succ (max u3 u2), succ (succ (max u3 u2))} (Set.{max u3 u2} (β -> α)) Type.{max u3 u2} (Set.hasCoeToSort.{max u3 u2} (β -> α)) (Set.range.{max u3 u2, succ u1} (β -> α) ι F)) α β _inst_4 _inst_5 ((fun (a : Type.{max u3 u2}) (b : Sort.{max (succ u3) (succ u2)}) [self : HasLiftT.{succ (max u3 u2), max (succ u3) (succ u2)} a b] => self.0) (coeSort.{succ (max u3 u2), succ (succ (max u3 u2))} (Set.{max u3 u2} (β -> α)) Type.{max u3 u2} (Set.hasCoeToSort.{max u3 u2} (β -> α)) (Set.range.{max u3 u2, succ u1} (β -> α) ι F)) (β -> α) (HasLiftT.mk.{succ (max u3 u2), max (succ u3) (succ u2)} (coeSort.{succ (max u3 u2), succ (succ (max u3 u2))} (Set.{max u3 u2} (β -> α)) Type.{max u3 u2} (Set.hasCoeToSort.{max u3 u2} (β -> α)) (Set.range.{max u3 u2, succ u1} (β -> α) ι F)) (β -> α) (CoeTCₓ.coe.{succ (max u3 u2), max (succ u3) (succ u2)} (coeSort.{succ (max u3 u2), succ (succ (max u3 u2))} (Set.{max u3 u2} (β -> α)) Type.{max u3 u2} (Set.hasCoeToSort.{max u3 u2} (β -> α)) (Set.range.{max u3 u2, succ u1} (β -> α) ι F)) (β -> α) (coeBase.{succ (max u3 u2), max (succ u3) (succ u2)} (coeSort.{succ (max u3 u2), succ (succ (max u3 u2))} (Set.{max u3 u2} (β -> α)) Type.{max u3 u2} (Set.hasCoeToSort.{max u3 u2} (β -> α)) (Set.range.{max u3 u2, succ u1} (β -> α) ι F)) (β -> α) (coeSubtype.{max (succ u3) (succ u2)} (β -> α) (fun (x : β -> α) => Membership.Mem.{max u3 u2, max u3 u2} (β -> α) (Set.{max u3 u2} (β -> α)) (Set.hasMem.{max u3 u2} (β -> α)) x (Set.range.{max u3 u2, succ u1} (β -> α) ι F))))))))
-but is expected to have type
-  forall {ι : Type.{u3}} {α : Type.{u2}} {β : Type.{u1}} [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u1} β] {F : ι -> β -> α}, Iff (UniformEquicontinuous.{u3, u2, u1} ι α β _inst_4 _inst_5 F) (UniformEquicontinuous.{max u2 u1, u2, u1} (Subtype.{succ (max u2 u1)} (β -> α) (fun (x : β -> α) => Membership.mem.{max u2 u1, max u2 u1} (β -> α) (Set.{max u2 u1} (β -> α)) (Set.instMembershipSet.{max u2 u1} (β -> α)) x (Set.range.{max u2 u1, succ u3} (β -> α) ι F))) α β _inst_4 _inst_5 (Subtype.val.{succ (max u2 u1)} (β -> α) (fun (x : β -> α) => Membership.mem.{max u2 u1, max u2 u1} (β -> α) (Set.{max u2 u1} (β -> α)) (Set.instMembershipSet.{max u2 u1} (β -> α)) x (Set.range.{max u2 u1, succ u3} (β -> α) ι F))))
-Case conversion may be inaccurate. Consider using '#align uniform_equicontinuous_at_iff_range uniformEquicontinuous_at_iff_rangeₓ'. -/
 /-- A family `𝓕 : ι → β → α` is uniformly equicontinuous iff `range 𝓕` is uniformly equicontinuous,
 i.e the family `coe : range F → β → α` is uniformly equicontinuous. -/
 theorem uniformEquicontinuous_at_iff_range {F : ι → β → α} :
@@ -362,12 +260,6 @@ section
 
 open UniformFun
 
-/- warning: equicontinuous_at_iff_continuous_at -> equicontinuousAt_iff_continuousAt is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {X : Type.{u2}} {α : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u3} α] {F : ι -> X -> α} {x₀ : X}, Iff (EquicontinuousAt.{u1, u2, u3} ι X α _inst_1 _inst_4 F x₀) (ContinuousAt.{u2, max u1 u3} X (UniformFun.{u1, u3} ι α) _inst_1 (UniformFun.topologicalSpace.{u1, u3} ι α _inst_4) (Function.comp.{succ u2, max (succ u1) (succ u3), max (succ u1) (succ u3)} X (ι -> α) (UniformFun.{u1, u3} ι α) (coeFn.{max 1 (succ u1) (succ u3), max (succ u1) (succ u3)} (Equiv.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (ι -> α) (UniformFun.{u1, u3} ι α)) (fun (_x : Equiv.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (ι -> α) (UniformFun.{u1, u3} ι α)) => (ι -> α) -> (UniformFun.{u1, u3} ι α)) (Equiv.hasCoeToFun.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (ι -> α) (UniformFun.{u1, u3} ι α)) (UniformFun.ofFun.{u1, u3} ι α)) (Function.swap.{succ u1, succ u2, succ u3} ι X (fun (ᾰ : ι) (ᾰ : X) => α) F)) x₀)
-but is expected to have type
-  forall {ι : Type.{u3}} {X : Type.{u2}} {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u1} α] {F : ι -> X -> α} {x₀ : X}, Iff (EquicontinuousAt.{u3, u2, u1} ι X α _inst_1 _inst_4 F x₀) (ContinuousAt.{u2, max u3 u1} X (UniformFun.{u3, u1} ι α) _inst_1 (UniformFun.topologicalSpace.{u3, u1} ι α _inst_4) (Function.comp.{succ u2, max (succ u1) (succ u3), max (succ u3) (succ u1)} X (ι -> α) (UniformFun.{u3, u1} ι α) (FunLike.coe.{max (succ u1) (succ u3), max (succ u1) (succ u3), max (succ u1) (succ u3)} (Equiv.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (ι -> α) (UniformFun.{u3, u1} ι α)) (ι -> α) (fun (_x : ι -> α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : ι -> α) => UniformFun.{u3, u1} ι α) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (ι -> α) (UniformFun.{u3, u1} ι α)) (UniformFun.ofFun.{u3, u1} ι α)) (Function.swap.{succ u3, succ u2, succ u1} ι X (fun (ᾰ : ι) (ᾰ : X) => α) F)) x₀)
-Case conversion may be inaccurate. Consider using '#align equicontinuous_at_iff_continuous_at equicontinuousAt_iff_continuousAtₓ'. -/
 /-- A family `𝓕 : ι → X → α` is equicontinuous at `x₀` iff the function `swap 𝓕 : X → ι → α` is
 continuous at `x₀` *when `ι → α` is equipped with the topology of uniform convergence*. This is
 very useful for developping the equicontinuity API, but it should not be used directly for other
@@ -377,12 +269,6 @@ theorem equicontinuousAt_iff_continuousAt {F : ι → X → α} {x₀ : X} :
   rw [ContinuousAt, (UniformFun.hasBasis_nhds ι α _).tendsto_right_iff] <;> rfl
 #align equicontinuous_at_iff_continuous_at equicontinuousAt_iff_continuousAt
 
-/- warning: equicontinuous_iff_continuous -> equicontinuous_iff_continuous is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {X : Type.{u2}} {α : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u3} α] {F : ι -> X -> α}, Iff (Equicontinuous.{u1, u2, u3} ι X α _inst_1 _inst_4 F) (Continuous.{u2, max u1 u3} X (UniformFun.{u1, u3} ι α) _inst_1 (UniformFun.topologicalSpace.{u1, u3} ι α _inst_4) (Function.comp.{succ u2, max (succ u1) (succ u3), max (succ u1) (succ u3)} X (ι -> α) (UniformFun.{u1, u3} ι α) (coeFn.{max 1 (succ u1) (succ u3), max (succ u1) (succ u3)} (Equiv.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (ι -> α) (UniformFun.{u1, u3} ι α)) (fun (_x : Equiv.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (ι -> α) (UniformFun.{u1, u3} ι α)) => (ι -> α) -> (UniformFun.{u1, u3} ι α)) (Equiv.hasCoeToFun.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (ι -> α) (UniformFun.{u1, u3} ι α)) (UniformFun.ofFun.{u1, u3} ι α)) (Function.swap.{succ u1, succ u2, succ u3} ι X (fun (ᾰ : ι) (ᾰ : X) => α) F)))
-but is expected to have type
-  forall {ι : Type.{u3}} {X : Type.{u2}} {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u1} α] {F : ι -> X -> α}, Iff (Equicontinuous.{u3, u2, u1} ι X α _inst_1 _inst_4 F) (Continuous.{u2, max u3 u1} X (UniformFun.{u3, u1} ι α) _inst_1 (UniformFun.topologicalSpace.{u3, u1} ι α _inst_4) (Function.comp.{succ u2, max (succ u1) (succ u3), max (succ u3) (succ u1)} X (ι -> α) (UniformFun.{u3, u1} ι α) (FunLike.coe.{max (succ u1) (succ u3), max (succ u1) (succ u3), max (succ u1) (succ u3)} (Equiv.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (ι -> α) (UniformFun.{u3, u1} ι α)) (ι -> α) (fun (_x : ι -> α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : ι -> α) => UniformFun.{u3, u1} ι α) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (ι -> α) (UniformFun.{u3, u1} ι α)) (UniformFun.ofFun.{u3, u1} ι α)) (Function.swap.{succ u3, succ u2, succ u1} ι X (fun (ᾰ : ι) (ᾰ : X) => α) F)))
-Case conversion may be inaccurate. Consider using '#align equicontinuous_iff_continuous equicontinuous_iff_continuousₓ'. -/
 /-- A family `𝓕 : ι → X → α` is equicontinuous iff the function `swap 𝓕 : X → ι → α` is
 continuous *when `ι → α` is equipped with the topology of uniform convergence*. This is
 very useful for developping the equicontinuity API, but it should not be used directly for other
@@ -392,12 +278,6 @@ theorem equicontinuous_iff_continuous {F : ι → X → α} :
   simp_rw [Equicontinuous, continuous_iff_continuousAt, equicontinuousAt_iff_continuousAt]
 #align equicontinuous_iff_continuous equicontinuous_iff_continuous
 
-/- warning: uniform_equicontinuous_iff_uniform_continuous -> uniformEquicontinuous_iff_uniformContinuous is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u3} β] {F : ι -> β -> α}, Iff (UniformEquicontinuous.{u1, u2, u3} ι α β _inst_4 _inst_5 F) (UniformContinuous.{u3, max u1 u2} β (UniformFun.{u1, u2} ι α) _inst_5 (UniformFun.uniformSpace.{u1, u2} ι α _inst_4) (Function.comp.{succ u3, max (succ u1) (succ u2), max (succ u1) (succ u2)} β (ι -> α) (UniformFun.{u1, u2} ι α) (coeFn.{max 1 (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (ι -> α) (UniformFun.{u1, u2} ι α)) (fun (_x : Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (ι -> α) (UniformFun.{u1, u2} ι α)) => (ι -> α) -> (UniformFun.{u1, u2} ι α)) (Equiv.hasCoeToFun.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (ι -> α) (UniformFun.{u1, u2} ι α)) (UniformFun.ofFun.{u1, u2} ι α)) (Function.swap.{succ u1, succ u3, succ u2} ι β (fun (ᾰ : ι) (ᾰ : β) => α) F)))
-but is expected to have type
-  forall {ι : Type.{u3}} {α : Type.{u2}} {β : Type.{u1}} [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u1} β] {F : ι -> β -> α}, Iff (UniformEquicontinuous.{u3, u2, u1} ι α β _inst_4 _inst_5 F) (UniformContinuous.{u1, max u3 u2} β (UniformFun.{u3, u2} ι α) _inst_5 (UniformFun.uniformSpace.{u3, u2} ι α _inst_4) (Function.comp.{succ u1, max (succ u2) (succ u3), max (succ u3) (succ u2)} β (ι -> α) (UniformFun.{u3, u2} ι α) (FunLike.coe.{max (succ u2) (succ u3), max (succ u2) (succ u3), max (succ u2) (succ u3)} (Equiv.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (ι -> α) (UniformFun.{u3, u2} ι α)) (ι -> α) (fun (_x : ι -> α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : ι -> α) => UniformFun.{u3, u2} ι α) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (ι -> α) (UniformFun.{u3, u2} ι α)) (UniformFun.ofFun.{u3, u2} ι α)) (Function.swap.{succ u3, succ u1, succ u2} ι β (fun (ᾰ : ι) (ᾰ : β) => α) F)))
-Case conversion may be inaccurate. Consider using '#align uniform_equicontinuous_iff_uniform_continuous uniformEquicontinuous_iff_uniformContinuousₓ'. -/
 /-- A family `𝓕 : ι → β → α` is uniformly equicontinuous iff the function `swap 𝓕 : β → ι → α` is
 uniformly continuous *when `ι → α` is equipped with the uniform structure of uniform convergence*.
 This is very useful for developping the equicontinuity API, but it should not be used directly
@@ -407,12 +287,6 @@ theorem uniformEquicontinuous_iff_uniformContinuous {F : ι → β → α} :
   rw [UniformContinuous, (UniformFun.hasBasis_uniformity ι α).tendsto_right_iff] <;> rfl
 #align uniform_equicontinuous_iff_uniform_continuous uniformEquicontinuous_iff_uniformContinuous
 
-/- warning: filter.has_basis.equicontinuous_at_iff_left -> Filter.HasBasis.equicontinuousAt_iff_left is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {X : Type.{u2}} {α : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u3} α] {κ : Type.{u4}} {p : κ -> Prop} {s : κ -> (Set.{u2} X)} {F : ι -> X -> α} {x₀ : X}, (Filter.HasBasis.{u2, succ u4} X κ (nhds.{u2} X _inst_1 x₀) p s) -> (Iff (EquicontinuousAt.{u1, u2, u3} ι X α _inst_1 _inst_4 F x₀) (forall (U : Set.{u3} (Prod.{u3, u3} α α)), (Membership.Mem.{u3, u3} (Set.{u3} (Prod.{u3, u3} α α)) (Filter.{u3} (Prod.{u3, u3} α α)) (Filter.hasMem.{u3} (Prod.{u3, u3} α α)) U (uniformity.{u3} α _inst_4)) -> (Exists.{succ u4} κ (fun (k : κ) => Exists.{0} (p k) (fun (_x : p k) => forall (x : X), (Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) x (s k)) -> (forall (i : ι), Membership.Mem.{u3, u3} (Prod.{u3, u3} α α) (Set.{u3} (Prod.{u3, u3} α α)) (Set.hasMem.{u3} (Prod.{u3, u3} α α)) (Prod.mk.{u3, u3} α α (F i x₀) (F i x)) U))))))
-but is expected to have type
-  forall {ι : Type.{u2}} {X : Type.{u3}} {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} X] [_inst_4 : UniformSpace.{u1} α] {κ : Type.{u4}} {p : κ -> Prop} {s : κ -> (Set.{u3} X)} {F : ι -> X -> α} {x₀ : X}, (Filter.HasBasis.{u3, succ u4} X κ (nhds.{u3} X _inst_1 x₀) p s) -> (Iff (EquicontinuousAt.{u2, u3, u1} ι X α _inst_1 _inst_4 F x₀) (forall (U : Set.{u1} (Prod.{u1, u1} α α)), (Membership.mem.{u1, u1} (Set.{u1} (Prod.{u1, u1} α α)) (Filter.{u1} (Prod.{u1, u1} α α)) (instMembershipSetFilter.{u1} (Prod.{u1, u1} α α)) U (uniformity.{u1} α _inst_4)) -> (Exists.{succ u4} κ (fun (k : κ) => And (p k) (forall (x : X), (Membership.mem.{u3, u3} X (Set.{u3} X) (Set.instMembershipSet.{u3} X) x (s k)) -> (forall (i : ι), Membership.mem.{u1, u1} (Prod.{u1, u1} α α) (Set.{u1} (Prod.{u1, u1} α α)) (Set.instMembershipSet.{u1} (Prod.{u1, u1} α α)) (Prod.mk.{u1, u1} α α (F i x₀) (F i x)) U))))))
-Case conversion may be inaccurate. Consider using '#align filter.has_basis.equicontinuous_at_iff_left Filter.HasBasis.equicontinuousAt_iff_leftₓ'. -/
 theorem Filter.HasBasis.equicontinuousAt_iff_left {κ : Type _} {p : κ → Prop} {s : κ → Set X}
     {F : ι → X → α} {x₀ : X} (hX : (𝓝 x₀).HasBasis p s) :
     EquicontinuousAt F x₀ ↔ ∀ U ∈ 𝓤 α, ∃ (k : _)(_ : p k), ∀ x ∈ s k, ∀ i, (F i x₀, F i x) ∈ U :=
@@ -422,12 +296,6 @@ theorem Filter.HasBasis.equicontinuousAt_iff_left {κ : Type _} {p : κ → Prop
   rfl
 #align filter.has_basis.equicontinuous_at_iff_left Filter.HasBasis.equicontinuousAt_iff_left
 
-/- warning: filter.has_basis.equicontinuous_at_iff_right -> Filter.HasBasis.equicontinuousAt_iff_right is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {X : Type.{u2}} {α : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u3} α] {κ : Type.{u4}} {p : κ -> Prop} {s : κ -> (Set.{u3} (Prod.{u3, u3} α α))} {F : ι -> X -> α} {x₀ : X}, (Filter.HasBasis.{u3, succ u4} (Prod.{u3, u3} α α) κ (uniformity.{u3} α _inst_4) p s) -> (Iff (EquicontinuousAt.{u1, u2, u3} ι X α _inst_1 _inst_4 F x₀) (forall (k : κ), (p k) -> (Filter.Eventually.{u2} X (fun (x : X) => forall (i : ι), Membership.Mem.{u3, u3} (Prod.{u3, u3} α α) (Set.{u3} (Prod.{u3, u3} α α)) (Set.hasMem.{u3} (Prod.{u3, u3} α α)) (Prod.mk.{u3, u3} α α (F i x₀) (F i x)) (s k)) (nhds.{u2} X _inst_1 x₀))))
-but is expected to have type
-  forall {ι : Type.{u2}} {X : Type.{u1}} {α : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : UniformSpace.{u3} α] {κ : Type.{u4}} {p : κ -> Prop} {s : κ -> (Set.{u3} (Prod.{u3, u3} α α))} {F : ι -> X -> α} {x₀ : X}, (Filter.HasBasis.{u3, succ u4} (Prod.{u3, u3} α α) κ (uniformity.{u3} α _inst_4) p s) -> (Iff (EquicontinuousAt.{u2, u1, u3} ι X α _inst_1 _inst_4 F x₀) (forall (k : κ), (p k) -> (Filter.Eventually.{u1} X (fun (x : X) => forall (i : ι), Membership.mem.{u3, u3} (Prod.{u3, u3} α α) (Set.{u3} (Prod.{u3, u3} α α)) (Set.instMembershipSet.{u3} (Prod.{u3, u3} α α)) (Prod.mk.{u3, u3} α α (F i x₀) (F i x)) (s k)) (nhds.{u1} X _inst_1 x₀))))
-Case conversion may be inaccurate. Consider using '#align filter.has_basis.equicontinuous_at_iff_right Filter.HasBasis.equicontinuousAt_iff_rightₓ'. -/
 theorem Filter.HasBasis.equicontinuousAt_iff_right {κ : Type _} {p : κ → Prop} {s : κ → Set (α × α)}
     {F : ι → X → α} {x₀ : X} (hα : (𝓤 α).HasBasis p s) :
     EquicontinuousAt F x₀ ↔ ∀ k, p k → ∀ᶠ x in 𝓝 x₀, ∀ i, (F i x₀, F i x) ∈ s k :=
@@ -437,9 +305,6 @@ theorem Filter.HasBasis.equicontinuousAt_iff_right {κ : Type _} {p : κ → Pro
   rfl
 #align filter.has_basis.equicontinuous_at_iff_right Filter.HasBasis.equicontinuousAt_iff_right
 
-/- warning: filter.has_basis.equicontinuous_at_iff -> Filter.HasBasis.equicontinuousAt_iff is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align filter.has_basis.equicontinuous_at_iff Filter.HasBasis.equicontinuousAt_iffₓ'. -/
 theorem Filter.HasBasis.equicontinuousAt_iff {κ₁ κ₂ : Type _} {p₁ : κ₁ → Prop} {s₁ : κ₁ → Set X}
     {p₂ : κ₂ → Prop} {s₂ : κ₂ → Set (α × α)} {F : ι → X → α} {x₀ : X} (hX : (𝓝 x₀).HasBasis p₁ s₁)
     (hα : (𝓤 α).HasBasis p₂ s₂) :
@@ -451,12 +316,6 @@ theorem Filter.HasBasis.equicontinuousAt_iff {κ₁ κ₂ : Type _} {p₁ : κ
   rfl
 #align filter.has_basis.equicontinuous_at_iff Filter.HasBasis.equicontinuousAt_iff
 
-/- warning: filter.has_basis.uniform_equicontinuous_iff_left -> Filter.HasBasis.uniformEquicontinuous_iff_left is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u3} β] {κ : Type.{u4}} {p : κ -> Prop} {s : κ -> (Set.{u3} (Prod.{u3, u3} β β))} {F : ι -> β -> α}, (Filter.HasBasis.{u3, succ u4} (Prod.{u3, u3} β β) κ (uniformity.{u3} β _inst_5) p s) -> (Iff (UniformEquicontinuous.{u1, u2, u3} ι α β _inst_4 _inst_5 F) (forall (U : Set.{u2} (Prod.{u2, u2} α α)), (Membership.Mem.{u2, u2} (Set.{u2} (Prod.{u2, u2} α α)) (Filter.{u2} (Prod.{u2, u2} α α)) (Filter.hasMem.{u2} (Prod.{u2, u2} α α)) U (uniformity.{u2} α _inst_4)) -> (Exists.{succ u4} κ (fun (k : κ) => Exists.{0} (p k) (fun (_x : p k) => forall (x : β) (y : β), (Membership.Mem.{u3, u3} (Prod.{u3, u3} β β) (Set.{u3} (Prod.{u3, u3} β β)) (Set.hasMem.{u3} (Prod.{u3, u3} β β)) (Prod.mk.{u3, u3} β β x y) (s k)) -> (forall (i : ι), Membership.Mem.{u2, u2} (Prod.{u2, u2} α α) (Set.{u2} (Prod.{u2, u2} α α)) (Set.hasMem.{u2} (Prod.{u2, u2} α α)) (Prod.mk.{u2, u2} α α (F i x) (F i y)) U))))))
-but is expected to have type
-  forall {ι : Type.{u2}} {α : Type.{u1}} {β : Type.{u3}} [_inst_4 : UniformSpace.{u1} α] [_inst_5 : UniformSpace.{u3} β] {κ : Type.{u4}} {p : κ -> Prop} {s : κ -> (Set.{u3} (Prod.{u3, u3} β β))} {F : ι -> β -> α}, (Filter.HasBasis.{u3, succ u4} (Prod.{u3, u3} β β) κ (uniformity.{u3} β _inst_5) p s) -> (Iff (UniformEquicontinuous.{u2, u1, u3} ι α β _inst_4 _inst_5 F) (forall (U : Set.{u1} (Prod.{u1, u1} α α)), (Membership.mem.{u1, u1} (Set.{u1} (Prod.{u1, u1} α α)) (Filter.{u1} (Prod.{u1, u1} α α)) (instMembershipSetFilter.{u1} (Prod.{u1, u1} α α)) U (uniformity.{u1} α _inst_4)) -> (Exists.{succ u4} κ (fun (k : κ) => And (p k) (forall (x : β) (y : β), (Membership.mem.{u3, u3} (Prod.{u3, u3} β β) (Set.{u3} (Prod.{u3, u3} β β)) (Set.instMembershipSet.{u3} (Prod.{u3, u3} β β)) (Prod.mk.{u3, u3} β β x y) (s k)) -> (forall (i : ι), Membership.mem.{u1, u1} (Prod.{u1, u1} α α) (Set.{u1} (Prod.{u1, u1} α α)) (Set.instMembershipSet.{u1} (Prod.{u1, u1} α α)) (Prod.mk.{u1, u1} α α (F i x) (F i y)) U))))))
-Case conversion may be inaccurate. Consider using '#align filter.has_basis.uniform_equicontinuous_iff_left Filter.HasBasis.uniformEquicontinuous_iff_leftₓ'. -/
 theorem Filter.HasBasis.uniformEquicontinuous_iff_left {κ : Type _} {p : κ → Prop}
     {s : κ → Set (β × β)} {F : ι → β → α} (hβ : (𝓤 β).HasBasis p s) :
     UniformEquicontinuous F ↔
@@ -468,12 +327,6 @@ theorem Filter.HasBasis.uniformEquicontinuous_iff_left {κ : Type _} {p : κ →
   rfl
 #align filter.has_basis.uniform_equicontinuous_iff_left Filter.HasBasis.uniformEquicontinuous_iff_left
 
-/- warning: filter.has_basis.uniform_equicontinuous_iff_right -> Filter.HasBasis.uniformEquicontinuous_iff_right is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u3} β] {κ : Type.{u4}} {p : κ -> Prop} {s : κ -> (Set.{u2} (Prod.{u2, u2} α α))} {F : ι -> β -> α}, (Filter.HasBasis.{u2, succ u4} (Prod.{u2, u2} α α) κ (uniformity.{u2} α _inst_4) p s) -> (Iff (UniformEquicontinuous.{u1, u2, u3} ι α β _inst_4 _inst_5 F) (forall (k : κ), (p k) -> (Filter.Eventually.{u3} (Prod.{u3, u3} β β) (fun (xy : Prod.{u3, u3} β β) => forall (i : ι), Membership.Mem.{u2, u2} (Prod.{u2, u2} α α) (Set.{u2} (Prod.{u2, u2} α α)) (Set.hasMem.{u2} (Prod.{u2, u2} α α)) (Prod.mk.{u2, u2} α α (F i (Prod.fst.{u3, u3} β β xy)) (F i (Prod.snd.{u3, u3} β β xy))) (s k)) (uniformity.{u3} β _inst_5))))
-but is expected to have type
-  forall {ι : Type.{u2}} {α : Type.{u3}} {β : Type.{u1}} [_inst_4 : UniformSpace.{u3} α] [_inst_5 : UniformSpace.{u1} β] {κ : Type.{u4}} {p : κ -> Prop} {s : κ -> (Set.{u3} (Prod.{u3, u3} α α))} {F : ι -> β -> α}, (Filter.HasBasis.{u3, succ u4} (Prod.{u3, u3} α α) κ (uniformity.{u3} α _inst_4) p s) -> (Iff (UniformEquicontinuous.{u2, u3, u1} ι α β _inst_4 _inst_5 F) (forall (k : κ), (p k) -> (Filter.Eventually.{u1} (Prod.{u1, u1} β β) (fun (xy : Prod.{u1, u1} β β) => forall (i : ι), Membership.mem.{u3, u3} (Prod.{u3, u3} α α) (Set.{u3} (Prod.{u3, u3} α α)) (Set.instMembershipSet.{u3} (Prod.{u3, u3} α α)) (Prod.mk.{u3, u3} α α (F i (Prod.fst.{u1, u1} β β xy)) (F i (Prod.snd.{u1, u1} β β xy))) (s k)) (uniformity.{u1} β _inst_5))))
-Case conversion may be inaccurate. Consider using '#align filter.has_basis.uniform_equicontinuous_iff_right Filter.HasBasis.uniformEquicontinuous_iff_rightₓ'. -/
 theorem Filter.HasBasis.uniformEquicontinuous_iff_right {κ : Type _} {p : κ → Prop}
     {s : κ → Set (α × α)} {F : ι → β → α} (hα : (𝓤 α).HasBasis p s) :
     UniformEquicontinuous F ↔ ∀ k, p k → ∀ᶠ xy : β × β in 𝓤 β, ∀ i, (F i xy.1, F i xy.2) ∈ s k :=
@@ -483,9 +336,6 @@ theorem Filter.HasBasis.uniformEquicontinuous_iff_right {κ : Type _} {p : κ 
   rfl
 #align filter.has_basis.uniform_equicontinuous_iff_right Filter.HasBasis.uniformEquicontinuous_iff_right
 
-/- warning: filter.has_basis.uniform_equicontinuous_iff -> Filter.HasBasis.uniformEquicontinuous_iff is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align filter.has_basis.uniform_equicontinuous_iff Filter.HasBasis.uniformEquicontinuous_iffₓ'. -/
 theorem Filter.HasBasis.uniformEquicontinuous_iff {κ₁ κ₂ : Type _} {p₁ : κ₁ → Prop}
     {s₁ : κ₁ → Set (β × β)} {p₂ : κ₂ → Prop} {s₂ : κ₂ → Set (α × α)} {F : ι → β → α}
     (hβ : (𝓤 β).HasBasis p₁ s₁) (hα : (𝓤 α).HasBasis p₂ s₂) :
@@ -498,12 +348,6 @@ theorem Filter.HasBasis.uniformEquicontinuous_iff {κ₁ κ₂ : Type _} {p₁ :
   rfl
 #align filter.has_basis.uniform_equicontinuous_iff Filter.HasBasis.uniformEquicontinuous_iff
 
-/- warning: uniform_inducing.equicontinuous_at_iff -> UniformInducing.equicontinuousAt_iff is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {X : Type.{u2}} {α : Type.{u3}} {β : Type.{u4}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u3} α] [_inst_5 : UniformSpace.{u4} β] {F : ι -> X -> α} {x₀ : X} {u : α -> β}, (UniformInducing.{u3, u4} α β _inst_4 _inst_5 u) -> (Iff (EquicontinuousAt.{u1, u2, u3} ι X α _inst_1 _inst_4 F x₀) (EquicontinuousAt.{u1, u2, u4} ι X β _inst_1 _inst_5 (Function.comp.{succ u1, max (succ u2) (succ u3), max (succ u2) (succ u4)} ι (X -> α) (X -> β) (Function.comp.{succ u2, succ u3, succ u4} X α β u) F) x₀))
-but is expected to have type
-  forall {ι : Type.{u2}} {X : Type.{u1}} {α : Type.{u4}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : UniformSpace.{u4} α] [_inst_5 : UniformSpace.{u3} β] {F : ι -> X -> α} {x₀ : X} {u : α -> β}, (UniformInducing.{u4, u3} α β _inst_4 _inst_5 u) -> (Iff (EquicontinuousAt.{u2, u1, u4} ι X α _inst_1 _inst_4 F x₀) (EquicontinuousAt.{u2, u1, u3} ι X β _inst_1 _inst_5 (Function.comp.{succ u2, max (succ u4) (succ u1), max (succ u3) (succ u1)} ι (X -> α) (X -> β) ((fun (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3100 : α -> β) (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3102 : X -> α) => Function.comp.{succ u1, succ u4, succ u3} X α β x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3100 x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3102) u) F) x₀))
-Case conversion may be inaccurate. Consider using '#align uniform_inducing.equicontinuous_at_iff UniformInducing.equicontinuousAt_iffₓ'. -/
 /-- Given `u : α → β` a uniform inducing map, a family `𝓕 : ι → X → α` is equicontinuous at a point
 `x₀ : X` iff the family `𝓕'`, obtained by precomposing each function of `𝓕` by `u`, is
 equicontinuous at `x₀`. -/
@@ -515,12 +359,6 @@ theorem UniformInducing.equicontinuousAt_iff {F : ι → X → α} {x₀ : X} {u
   rfl
 #align uniform_inducing.equicontinuous_at_iff UniformInducing.equicontinuousAt_iff
 
-/- warning: uniform_inducing.equicontinuous_iff -> UniformInducing.equicontinuous_iff is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {X : Type.{u2}} {α : Type.{u3}} {β : Type.{u4}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u3} α] [_inst_5 : UniformSpace.{u4} β] {F : ι -> X -> α} {u : α -> β}, (UniformInducing.{u3, u4} α β _inst_4 _inst_5 u) -> (Iff (Equicontinuous.{u1, u2, u3} ι X α _inst_1 _inst_4 F) (Equicontinuous.{u1, u2, u4} ι X β _inst_1 _inst_5 (Function.comp.{succ u1, max (succ u2) (succ u3), max (succ u2) (succ u4)} ι (X -> α) (X -> β) (Function.comp.{succ u2, succ u3, succ u4} X α β u) F)))
-but is expected to have type
-  forall {ι : Type.{u2}} {X : Type.{u1}} {α : Type.{u4}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : UniformSpace.{u4} α] [_inst_5 : UniformSpace.{u3} β] {F : ι -> X -> α} {u : α -> β}, (UniformInducing.{u4, u3} α β _inst_4 _inst_5 u) -> (Iff (Equicontinuous.{u2, u1, u4} ι X α _inst_1 _inst_4 F) (Equicontinuous.{u2, u1, u3} ι X β _inst_1 _inst_5 (Function.comp.{succ u2, max (succ u4) (succ u1), max (succ u3) (succ u1)} ι (X -> α) (X -> β) ((fun (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3236 : α -> β) (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3238 : X -> α) => Function.comp.{succ u1, succ u4, succ u3} X α β x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3236 x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3238) u) F)))
-Case conversion may be inaccurate. Consider using '#align uniform_inducing.equicontinuous_iff UniformInducing.equicontinuous_iffₓ'. -/
 /- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:73:14: unsupported tactic `congrm #[[expr ∀ x, (_ : exprProp())]] -/
 /-- Given `u : α → β` a uniform inducing map, a family `𝓕 : ι → X → α` is equicontinuous iff the
 family `𝓕'`, obtained by precomposing each function of `𝓕` by `u`, is equicontinuous. -/
@@ -532,12 +370,6 @@ theorem UniformInducing.equicontinuous_iff {F : ι → X → α} {u : α → β}
   rw [hu.equicontinuous_at_iff]
 #align uniform_inducing.equicontinuous_iff UniformInducing.equicontinuous_iff
 
-/- warning: uniform_inducing.uniform_equicontinuous_iff -> UniformInducing.uniformEquicontinuous_iff is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} {γ : Type.{u4}} [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u3} β] [_inst_6 : UniformSpace.{u4} γ] {F : ι -> β -> α} {u : α -> γ}, (UniformInducing.{u2, u4} α γ _inst_4 _inst_6 u) -> (Iff (UniformEquicontinuous.{u1, u2, u3} ι α β _inst_4 _inst_5 F) (UniformEquicontinuous.{u1, u4, u3} ι γ β _inst_6 _inst_5 (Function.comp.{succ u1, max (succ u3) (succ u2), max (succ u3) (succ u4)} ι (β -> α) (β -> γ) (Function.comp.{succ u3, succ u2, succ u4} β α γ u) F)))
-but is expected to have type
-  forall {ι : Type.{u2}} {α : Type.{u4}} {β : Type.{u1}} {γ : Type.{u3}} [_inst_4 : UniformSpace.{u4} α] [_inst_5 : UniformSpace.{u1} β] [_inst_6 : UniformSpace.{u3} γ] {F : ι -> β -> α} {u : α -> γ}, (UniformInducing.{u4, u3} α γ _inst_4 _inst_6 u) -> (Iff (UniformEquicontinuous.{u2, u4, u1} ι α β _inst_4 _inst_5 F) (UniformEquicontinuous.{u2, u3, u1} ι γ β _inst_6 _inst_5 (Function.comp.{succ u2, max (succ u4) (succ u1), max (succ u1) (succ u3)} ι (β -> α) (β -> γ) ((fun (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3423 : α -> γ) (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3425 : β -> α) => Function.comp.{succ u1, succ u4, succ u3} β α γ x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3423 x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3425) u) F)))
-Case conversion may be inaccurate. Consider using '#align uniform_inducing.uniform_equicontinuous_iff UniformInducing.uniformEquicontinuous_iffₓ'. -/
 /-- Given `u : α → γ` a uniform inducing map, a family `𝓕 : ι → β → α` is uniformly equicontinuous
 iff the family `𝓕'`, obtained by precomposing each function of `𝓕` by `u`, is uniformly
 equicontinuous. -/
@@ -550,12 +382,6 @@ theorem UniformInducing.uniformEquicontinuous_iff {F : ι → β → α} {u : α
   rfl
 #align uniform_inducing.uniform_equicontinuous_iff UniformInducing.uniformEquicontinuous_iff
 
-/- warning: equicontinuous_at.closure' -> EquicontinuousAt.closure' is a dubious translation:
-lean 3 declaration is
-  forall {X : Type.{u1}} {Y : Type.{u2}} {α : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u2} Y] [_inst_4 : UniformSpace.{u3} α] {A : Set.{u2} Y} {u : Y -> X -> α} {x₀ : X}, (EquicontinuousAt.{u2, u1, u3} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} Y) Type.{u2} (Set.hasCoeToSort.{u2} Y) A) X α _inst_1 _inst_4 (Function.comp.{succ u2, succ u2, max (succ u1) (succ u3)} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} Y) Type.{u2} (Set.hasCoeToSort.{u2} Y) A) Y (X -> α) u ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} Y) Type.{u2} (Set.hasCoeToSort.{u2} Y) A) Y (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} Y) Type.{u2} (Set.hasCoeToSort.{u2} Y) A) Y (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} Y) Type.{u2} (Set.hasCoeToSort.{u2} Y) A) Y (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} Y) Type.{u2} (Set.hasCoeToSort.{u2} Y) A) Y (coeSubtype.{succ u2} Y (fun (x : Y) => Membership.Mem.{u2, u2} Y (Set.{u2} Y) (Set.hasMem.{u2} Y) x A))))))) x₀) -> (Continuous.{u2, max u1 u3} Y (X -> α) _inst_2 (Pi.topologicalSpace.{u1, u3} X (fun (ᾰ : X) => α) (fun (a : X) => UniformSpace.toTopologicalSpace.{u3} α _inst_4)) u) -> (EquicontinuousAt.{u2, u1, u3} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} Y) Type.{u2} (Set.hasCoeToSort.{u2} Y) (closure.{u2} Y _inst_2 A)) X α _inst_1 _inst_4 (Function.comp.{succ u2, succ u2, max (succ u1) (succ u3)} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} Y) Type.{u2} (Set.hasCoeToSort.{u2} Y) (closure.{u2} Y _inst_2 A)) Y (X -> α) u ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} Y) Type.{u2} (Set.hasCoeToSort.{u2} Y) (closure.{u2} Y _inst_2 A)) Y (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} Y) Type.{u2} (Set.hasCoeToSort.{u2} Y) (closure.{u2} Y _inst_2 A)) Y (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} Y) Type.{u2} (Set.hasCoeToSort.{u2} Y) (closure.{u2} Y _inst_2 A)) Y (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} Y) Type.{u2} (Set.hasCoeToSort.{u2} Y) (closure.{u2} Y _inst_2 A)) Y (coeSubtype.{succ u2} Y (fun (x : Y) => Membership.Mem.{u2, u2} Y (Set.{u2} Y) (Set.hasMem.{u2} Y) x (closure.{u2} Y _inst_2 A)))))))) x₀)
-but is expected to have type
-  forall {X : Type.{u2}} {Y : Type.{u3}} {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : TopologicalSpace.{u3} Y] [_inst_4 : UniformSpace.{u1} α] {A : Set.{u3} Y} {u : Y -> X -> α} {x₀ : X}, (EquicontinuousAt.{u3, u2, u1} (Set.Elem.{u3} Y A) X α _inst_1 _inst_4 (Function.comp.{succ u3, succ u3, max (succ u2) (succ u1)} (Set.Elem.{u3} Y A) Y (X -> α) u (Subtype.val.{succ u3} Y (fun (x : Y) => Membership.mem.{u3, u3} Y (Set.{u3} Y) (Set.instMembershipSet.{u3} Y) x A))) x₀) -> (Continuous.{u3, max u2 u1} Y (X -> α) _inst_2 (Pi.topologicalSpace.{u2, u1} X (fun (ᾰ : X) => α) (fun (a : X) => UniformSpace.toTopologicalSpace.{u1} α _inst_4)) u) -> (EquicontinuousAt.{u3, u2, u1} (Set.Elem.{u3} Y (closure.{u3} Y _inst_2 A)) X α _inst_1 _inst_4 (Function.comp.{succ u3, succ u3, max (succ u2) (succ u1)} (Set.Elem.{u3} Y (closure.{u3} Y _inst_2 A)) Y (X -> α) u (Subtype.val.{succ u3} Y (fun (x : Y) => Membership.mem.{u3, u3} Y (Set.{u3} Y) (Set.instMembershipSet.{u3} Y) x (closure.{u3} Y _inst_2 A)))) x₀)
-Case conversion may be inaccurate. Consider using '#align equicontinuous_at.closure' EquicontinuousAt.closure'ₓ'. -/
 /-- A version of `equicontinuous_at.closure` applicable to subsets of types which embed continuously
 into `X → α` with the product topology. It turns out we don't need any other condition on the
 embedding than continuity, but in practice this will mostly be applied to `fun_like` types where
@@ -573,12 +399,6 @@ theorem EquicontinuousAt.closure' {A : Set Y} {u : Y → X → α} {x₀ : X}
   exact Continuous.prod_mk ((continuous_apply x₀).comp hu) ((continuous_apply x).comp hu)
 #align equicontinuous_at.closure' EquicontinuousAt.closure'
 
-/- warning: equicontinuous_at.closure -> EquicontinuousAt.closure is a dubious translation:
-lean 3 declaration is
-  forall {X : Type.{u1}} {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : UniformSpace.{u2} α] {A : Set.{max u1 u2} (X -> α)} {x₀ : X}, (Set.EquicontinuousAt.{u1, u2} X α _inst_1 _inst_4 A x₀) -> (Set.EquicontinuousAt.{u1, u2} X α _inst_1 _inst_4 (closure.{max u1 u2} (X -> α) (Pi.topologicalSpace.{u1, u2} X (fun (ᾰ : X) => α) (fun (a : X) => UniformSpace.toTopologicalSpace.{u2} α _inst_4)) A) x₀)
-but is expected to have type
-  forall {X : Type.{u2}} {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u1} α] {A : Set.{max u2 u1} (X -> α)} {x₀ : X}, (Set.EquicontinuousAt.{u2, u1} X α _inst_1 _inst_4 A x₀) -> (Set.EquicontinuousAt.{u2, u1} X α _inst_1 _inst_4 (closure.{max u2 u1} (X -> α) (Pi.topologicalSpace.{u2, u1} X (fun (ᾰ : X) => α) (fun (a : X) => UniformSpace.toTopologicalSpace.{u1} α _inst_4)) A) x₀)
-Case conversion may be inaccurate. Consider using '#align equicontinuous_at.closure EquicontinuousAt.closureₓ'. -/
 /-- If a set of functions is equicontinuous at some `x₀`, its closure for the product topology is
 also equicontinuous at `x₀`. -/
 theorem EquicontinuousAt.closure {A : Set <| X → α} {x₀ : X} (hA : A.EquicontinuousAt x₀) :
@@ -586,12 +406,6 @@ theorem EquicontinuousAt.closure {A : Set <| X → α} {x₀ : X} (hA : A.Equico
   @EquicontinuousAt.closure' _ _ _ _ _ _ _ id _ hA continuous_id
 #align equicontinuous_at.closure EquicontinuousAt.closure
 
-/- warning: filter.tendsto.continuous_at_of_equicontinuous_at -> Filter.Tendsto.continuousAt_of_equicontinuousAt is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {X : Type.{u2}} {α : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u3} α] {l : Filter.{u1} ι} [_inst_7 : Filter.NeBot.{u1} ι l] {F : ι -> X -> α} {f : X -> α} {x₀ : X}, (Filter.Tendsto.{u1, max u2 u3} ι (X -> α) F l (nhds.{max u2 u3} (X -> α) (Pi.topologicalSpace.{u2, u3} X (fun (ᾰ : X) => α) (fun (a : X) => UniformSpace.toTopologicalSpace.{u3} α _inst_4)) f)) -> (EquicontinuousAt.{u1, u2, u3} ι X α _inst_1 _inst_4 F x₀) -> (ContinuousAt.{u2, u3} X α _inst_1 (UniformSpace.toTopologicalSpace.{u3} α _inst_4) f x₀)
-but is expected to have type
-  forall {ι : Type.{u3}} {X : Type.{u2}} {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u1} α] {l : Filter.{u3} ι} [_inst_7 : Filter.NeBot.{u3} ι l] {F : ι -> X -> α} {f : X -> α} {x₀ : X}, (Filter.Tendsto.{u3, max u2 u1} ι (X -> α) F l (nhds.{max u2 u1} (X -> α) (Pi.topologicalSpace.{u2, u1} X (fun (ᾰ : X) => α) (fun (a : X) => UniformSpace.toTopologicalSpace.{u1} α _inst_4)) f)) -> (EquicontinuousAt.{u3, u2, u1} ι X α _inst_1 _inst_4 F x₀) -> (ContinuousAt.{u2, u1} X α _inst_1 (UniformSpace.toTopologicalSpace.{u1} α _inst_4) f x₀)
-Case conversion may be inaccurate. Consider using '#align filter.tendsto.continuous_at_of_equicontinuous_at Filter.Tendsto.continuousAt_of_equicontinuousAtₓ'. -/
 /-- If `𝓕 : ι → X → α` tends to `f : X → α` *pointwise* along some nontrivial filter, and if the
 family `𝓕` is equicontinuous at some `x₀ : X`, then the limit is continuous at `x₀`. -/
 theorem Filter.Tendsto.continuousAt_of_equicontinuousAt {l : Filter ι} [l.ne_bot] {F : ι → X → α}
@@ -601,12 +415,6 @@ theorem Filter.Tendsto.continuousAt_of_equicontinuousAt {l : Filter ι} [l.ne_bo
     ⟨f, mem_closure_of_tendsto h₁ <| eventually_of_forall mem_range_self⟩
 #align filter.tendsto.continuous_at_of_equicontinuous_at Filter.Tendsto.continuousAt_of_equicontinuousAt
 
-/- warning: equicontinuous.closure' -> Equicontinuous.closure' is a dubious translation:
-lean 3 declaration is
-  forall {X : Type.{u1}} {Y : Type.{u2}} {α : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u2} Y] [_inst_4 : UniformSpace.{u3} α] {A : Set.{u2} Y} {u : Y -> X -> α}, (Equicontinuous.{u2, u1, u3} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} Y) Type.{u2} (Set.hasCoeToSort.{u2} Y) A) X α _inst_1 _inst_4 (Function.comp.{succ u2, succ u2, max (succ u1) (succ u3)} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} Y) Type.{u2} (Set.hasCoeToSort.{u2} Y) A) Y (X -> α) u ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} Y) Type.{u2} (Set.hasCoeToSort.{u2} Y) A) Y (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} Y) Type.{u2} (Set.hasCoeToSort.{u2} Y) A) Y (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} Y) Type.{u2} (Set.hasCoeToSort.{u2} Y) A) Y (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} Y) Type.{u2} (Set.hasCoeToSort.{u2} Y) A) Y (coeSubtype.{succ u2} Y (fun (x : Y) => Membership.Mem.{u2, u2} Y (Set.{u2} Y) (Set.hasMem.{u2} Y) x A)))))))) -> (Continuous.{u2, max u1 u3} Y (X -> α) _inst_2 (Pi.topologicalSpace.{u1, u3} X (fun (ᾰ : X) => α) (fun (a : X) => UniformSpace.toTopologicalSpace.{u3} α _inst_4)) u) -> (Equicontinuous.{u2, u1, u3} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} Y) Type.{u2} (Set.hasCoeToSort.{u2} Y) (closure.{u2} Y _inst_2 A)) X α _inst_1 _inst_4 (Function.comp.{succ u2, succ u2, max (succ u1) (succ u3)} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} Y) Type.{u2} (Set.hasCoeToSort.{u2} Y) (closure.{u2} Y _inst_2 A)) Y (X -> α) u ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} Y) Type.{u2} (Set.hasCoeToSort.{u2} Y) (closure.{u2} Y _inst_2 A)) Y (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} Y) Type.{u2} (Set.hasCoeToSort.{u2} Y) (closure.{u2} Y _inst_2 A)) Y (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} Y) Type.{u2} (Set.hasCoeToSort.{u2} Y) (closure.{u2} Y _inst_2 A)) Y (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} Y) Type.{u2} (Set.hasCoeToSort.{u2} Y) (closure.{u2} Y _inst_2 A)) Y (coeSubtype.{succ u2} Y (fun (x : Y) => Membership.Mem.{u2, u2} Y (Set.{u2} Y) (Set.hasMem.{u2} Y) x (closure.{u2} Y _inst_2 A)))))))))
-but is expected to have type
-  forall {X : Type.{u2}} {Y : Type.{u3}} {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : TopologicalSpace.{u3} Y] [_inst_4 : UniformSpace.{u1} α] {A : Set.{u3} Y} {u : Y -> X -> α}, (Equicontinuous.{u3, u2, u1} (Set.Elem.{u3} Y A) X α _inst_1 _inst_4 (Function.comp.{succ u3, succ u3, max (succ u2) (succ u1)} (Set.Elem.{u3} Y A) Y (X -> α) u (Subtype.val.{succ u3} Y (fun (x : Y) => Membership.mem.{u3, u3} Y (Set.{u3} Y) (Set.instMembershipSet.{u3} Y) x A)))) -> (Continuous.{u3, max u2 u1} Y (X -> α) _inst_2 (Pi.topologicalSpace.{u2, u1} X (fun (ᾰ : X) => α) (fun (a : X) => UniformSpace.toTopologicalSpace.{u1} α _inst_4)) u) -> (Equicontinuous.{u3, u2, u1} (Set.Elem.{u3} Y (closure.{u3} Y _inst_2 A)) X α _inst_1 _inst_4 (Function.comp.{succ u3, succ u3, max (succ u2) (succ u1)} (Set.Elem.{u3} Y (closure.{u3} Y _inst_2 A)) Y (X -> α) u (Subtype.val.{succ u3} Y (fun (x : Y) => Membership.mem.{u3, u3} Y (Set.{u3} Y) (Set.instMembershipSet.{u3} Y) x (closure.{u3} Y _inst_2 A)))))
-Case conversion may be inaccurate. Consider using '#align equicontinuous.closure' Equicontinuous.closure'ₓ'. -/
 /-- A version of `equicontinuous.closure` applicable to subsets of types which embed continuously
 into `X → α` with the product topology. It turns out we don't need any other condition on the
 embedding than continuity, but in practice this will mostly be applied to `fun_like` types where
@@ -616,24 +424,12 @@ theorem Equicontinuous.closure' {A : Set Y} {u : Y → X → α}
     Equicontinuous (u ∘ coe : closure A → X → α) := fun x => (hA x).closure' hu
 #align equicontinuous.closure' Equicontinuous.closure'
 
-/- warning: equicontinuous.closure -> Equicontinuous.closure is a dubious translation:
-lean 3 declaration is
-  forall {X : Type.{u1}} {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : UniformSpace.{u2} α] {A : Set.{max u1 u2} (X -> α)}, (Set.Equicontinuous.{u1, u2} X α _inst_1 _inst_4 A) -> (Set.Equicontinuous.{u1, u2} X α _inst_1 _inst_4 (closure.{max u1 u2} (X -> α) (Pi.topologicalSpace.{u1, u2} X (fun (ᾰ : X) => α) (fun (a : X) => UniformSpace.toTopologicalSpace.{u2} α _inst_4)) A))
-but is expected to have type
-  forall {X : Type.{u2}} {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u1} α] {A : Set.{max u2 u1} (X -> α)}, (Set.Equicontinuous.{u2, u1} X α _inst_1 _inst_4 A) -> (Set.Equicontinuous.{u2, u1} X α _inst_1 _inst_4 (closure.{max u2 u1} (X -> α) (Pi.topologicalSpace.{u2, u1} X (fun (ᾰ : X) => α) (fun (a : X) => UniformSpace.toTopologicalSpace.{u1} α _inst_4)) A))
-Case conversion may be inaccurate. Consider using '#align equicontinuous.closure Equicontinuous.closureₓ'. -/
 /-- If a set of functions is equicontinuous, its closure for the product topology is also
 equicontinuous. -/
 theorem Equicontinuous.closure {A : Set <| X → α} (hA : A.Equicontinuous) :
     (closure A).Equicontinuous := fun x => (hA x).closure
 #align equicontinuous.closure Equicontinuous.closure
 
-/- warning: filter.tendsto.continuous_of_equicontinuous_at -> Filter.Tendsto.continuous_of_equicontinuous_at is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {X : Type.{u2}} {α : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u3} α] {l : Filter.{u1} ι} [_inst_7 : Filter.NeBot.{u1} ι l] {F : ι -> X -> α} {f : X -> α}, (Filter.Tendsto.{u1, max u2 u3} ι (X -> α) F l (nhds.{max u2 u3} (X -> α) (Pi.topologicalSpace.{u2, u3} X (fun (ᾰ : X) => α) (fun (a : X) => UniformSpace.toTopologicalSpace.{u3} α _inst_4)) f)) -> (Equicontinuous.{u1, u2, u3} ι X α _inst_1 _inst_4 F) -> (Continuous.{u2, u3} X α _inst_1 (UniformSpace.toTopologicalSpace.{u3} α _inst_4) f)
-but is expected to have type
-  forall {ι : Type.{u3}} {X : Type.{u2}} {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u1} α] {l : Filter.{u3} ι} [_inst_7 : Filter.NeBot.{u3} ι l] {F : ι -> X -> α} {f : X -> α}, (Filter.Tendsto.{u3, max u2 u1} ι (X -> α) F l (nhds.{max u2 u1} (X -> α) (Pi.topologicalSpace.{u2, u1} X (fun (ᾰ : X) => α) (fun (a : X) => UniformSpace.toTopologicalSpace.{u1} α _inst_4)) f)) -> (Equicontinuous.{u3, u2, u1} ι X α _inst_1 _inst_4 F) -> (Continuous.{u2, u1} X α _inst_1 (UniformSpace.toTopologicalSpace.{u1} α _inst_4) f)
-Case conversion may be inaccurate. Consider using '#align filter.tendsto.continuous_of_equicontinuous_at Filter.Tendsto.continuous_of_equicontinuous_atₓ'. -/
 /-- If `𝓕 : ι → X → α` tends to `f : X → α` *pointwise* along some nontrivial filter, and if the
 family `𝓕` is equicontinuous, then the limit is continuous. -/
 theorem Filter.Tendsto.continuous_of_equicontinuous_at {l : Filter ι} [l.ne_bot] {F : ι → X → α}
@@ -641,12 +437,6 @@ theorem Filter.Tendsto.continuous_of_equicontinuous_at {l : Filter ι} [l.ne_bot
   continuous_iff_continuousAt.mpr fun x => h₁.continuousAt_of_equicontinuousAt (h₂ x)
 #align filter.tendsto.continuous_of_equicontinuous_at Filter.Tendsto.continuous_of_equicontinuous_at
 
-/- warning: uniform_equicontinuous.closure' -> UniformEquicontinuous.closure' is a dubious translation:
-lean 3 declaration is
-  forall {Y : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_2 : TopologicalSpace.{u1} Y] [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u3} β] {A : Set.{u1} Y} {u : Y -> β -> α}, (UniformEquicontinuous.{u1, u2, u3} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} Y) Type.{u1} (Set.hasCoeToSort.{u1} Y) A) α β _inst_4 _inst_5 (Function.comp.{succ u1, succ u1, max (succ u3) (succ u2)} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} Y) Type.{u1} (Set.hasCoeToSort.{u1} Y) A) Y (β -> α) u ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Set.{u1} Y) Type.{u1} (Set.hasCoeToSort.{u1} Y) A) Y (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} Y) Type.{u1} (Set.hasCoeToSort.{u1} Y) A) Y (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} Y) Type.{u1} (Set.hasCoeToSort.{u1} Y) A) Y (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} Y) Type.{u1} (Set.hasCoeToSort.{u1} Y) A) Y (coeSubtype.{succ u1} Y (fun (x : Y) => Membership.Mem.{u1, u1} Y (Set.{u1} Y) (Set.hasMem.{u1} Y) x A)))))))) -> (Continuous.{u1, max u3 u2} Y (β -> α) _inst_2 (Pi.topologicalSpace.{u3, u2} β (fun (ᾰ : β) => α) (fun (a : β) => UniformSpace.toTopologicalSpace.{u2} α _inst_4)) u) -> (UniformEquicontinuous.{u1, u2, u3} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} Y) Type.{u1} (Set.hasCoeToSort.{u1} Y) (closure.{u1} Y _inst_2 A)) α β _inst_4 _inst_5 (Function.comp.{succ u1, succ u1, max (succ u3) (succ u2)} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} Y) Type.{u1} (Set.hasCoeToSort.{u1} Y) (closure.{u1} Y _inst_2 A)) Y (β -> α) u ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Set.{u1} Y) Type.{u1} (Set.hasCoeToSort.{u1} Y) (closure.{u1} Y _inst_2 A)) Y (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} Y) Type.{u1} (Set.hasCoeToSort.{u1} Y) (closure.{u1} Y _inst_2 A)) Y (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} Y) Type.{u1} (Set.hasCoeToSort.{u1} Y) (closure.{u1} Y _inst_2 A)) Y (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} Y) Type.{u1} (Set.hasCoeToSort.{u1} Y) (closure.{u1} Y _inst_2 A)) Y (coeSubtype.{succ u1} Y (fun (x : Y) => Membership.Mem.{u1, u1} Y (Set.{u1} Y) (Set.hasMem.{u1} Y) x (closure.{u1} Y _inst_2 A)))))))))
-but is expected to have type
-  forall {Y : Type.{u3}} {α : Type.{u2}} {β : Type.{u1}} [_inst_2 : TopologicalSpace.{u3} Y] [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u1} β] {A : Set.{u3} Y} {u : Y -> β -> α}, (UniformEquicontinuous.{u3, u2, u1} (Set.Elem.{u3} Y A) α β _inst_4 _inst_5 (Function.comp.{succ u3, succ u3, max (succ u2) (succ u1)} (Set.Elem.{u3} Y A) Y (β -> α) u (Subtype.val.{succ u3} Y (fun (x : Y) => Membership.mem.{u3, u3} Y (Set.{u3} Y) (Set.instMembershipSet.{u3} Y) x A)))) -> (Continuous.{u3, max u2 u1} Y (β -> α) _inst_2 (Pi.topologicalSpace.{u1, u2} β (fun (ᾰ : β) => α) (fun (a : β) => UniformSpace.toTopologicalSpace.{u2} α _inst_4)) u) -> (UniformEquicontinuous.{u3, u2, u1} (Set.Elem.{u3} Y (closure.{u3} Y _inst_2 A)) α β _inst_4 _inst_5 (Function.comp.{succ u3, succ u3, max (succ u2) (succ u1)} (Set.Elem.{u3} Y (closure.{u3} Y _inst_2 A)) Y (β -> α) u (Subtype.val.{succ u3} Y (fun (x : Y) => Membership.mem.{u3, u3} Y (Set.{u3} Y) (Set.instMembershipSet.{u3} Y) x (closure.{u3} Y _inst_2 A)))))
-Case conversion may be inaccurate. Consider using '#align uniform_equicontinuous.closure' UniformEquicontinuous.closure'ₓ'. -/
 /-- A version of `uniform_equicontinuous.closure` applicable to subsets of types which embed
 continuously into `β → α` with the product topology. It turns out we don't need any other condition
 on the embedding than continuity, but in practice this will mostly be applied to `fun_like` types
@@ -665,12 +455,6 @@ theorem UniformEquicontinuous.closure' {A : Set Y} {u : Y → β → α}
   exact Continuous.prod_mk ((continuous_apply x).comp hu) ((continuous_apply y).comp hu)
 #align uniform_equicontinuous.closure' UniformEquicontinuous.closure'
 
-/- warning: uniform_equicontinuous.closure -> UniformEquicontinuous.closure is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_4 : UniformSpace.{u1} α] [_inst_5 : UniformSpace.{u2} β] {A : Set.{max u2 u1} (β -> α)}, (Set.UniformEquicontinuous.{u1, u2} α β _inst_4 _inst_5 A) -> (Set.UniformEquicontinuous.{u1, u2} α β _inst_4 _inst_5 (closure.{max u2 u1} (β -> α) (Pi.topologicalSpace.{u2, u1} β (fun (ᾰ : β) => α) (fun (a : β) => UniformSpace.toTopologicalSpace.{u1} α _inst_4)) A))
-but is expected to have type
-  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u1} β] {A : Set.{max u2 u1} (β -> α)}, (Set.UniformEquicontinuous.{u2, u1} α β _inst_4 _inst_5 A) -> (Set.UniformEquicontinuous.{u2, u1} α β _inst_4 _inst_5 (closure.{max u2 u1} (β -> α) (Pi.topologicalSpace.{u1, u2} β (fun (ᾰ : β) => α) (fun (a : β) => UniformSpace.toTopologicalSpace.{u2} α _inst_4)) A))
-Case conversion may be inaccurate. Consider using '#align uniform_equicontinuous.closure UniformEquicontinuous.closureₓ'. -/
 /-- If a set of functions is uniformly equicontinuous, its closure for the product topology is also
 uniformly equicontinuous. -/
 theorem UniformEquicontinuous.closure {A : Set <| β → α} (hA : A.UniformEquicontinuous) :
@@ -678,12 +462,6 @@ theorem UniformEquicontinuous.closure {A : Set <| β → α} (hA : A.UniformEqui
   @UniformEquicontinuous.closure' _ _ _ _ _ _ _ id hA continuous_id
 #align uniform_equicontinuous.closure UniformEquicontinuous.closure
 
-/- warning: filter.tendsto.uniform_continuous_of_uniform_equicontinuous -> Filter.Tendsto.uniformContinuous_of_uniformEquicontinuous is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u3} β] {l : Filter.{u1} ι} [_inst_7 : Filter.NeBot.{u1} ι l] {F : ι -> β -> α} {f : β -> α}, (Filter.Tendsto.{u1, max u3 u2} ι (β -> α) F l (nhds.{max u3 u2} (β -> α) (Pi.topologicalSpace.{u3, u2} β (fun (ᾰ : β) => α) (fun (a : β) => UniformSpace.toTopologicalSpace.{u2} α _inst_4)) f)) -> (UniformEquicontinuous.{u1, u2, u3} ι α β _inst_4 _inst_5 F) -> (UniformContinuous.{u3, u2} β α _inst_5 _inst_4 f)
-but is expected to have type
-  forall {ι : Type.{u3}} {α : Type.{u2}} {β : Type.{u1}} [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u1} β] {l : Filter.{u3} ι} [_inst_7 : Filter.NeBot.{u3} ι l] {F : ι -> β -> α} {f : β -> α}, (Filter.Tendsto.{u3, max u2 u1} ι (β -> α) F l (nhds.{max u2 u1} (β -> α) (Pi.topologicalSpace.{u1, u2} β (fun (ᾰ : β) => α) (fun (a : β) => UniformSpace.toTopologicalSpace.{u2} α _inst_4)) f)) -> (UniformEquicontinuous.{u3, u2, u1} ι α β _inst_4 _inst_5 F) -> (UniformContinuous.{u1, u2} β α _inst_5 _inst_4 f)
-Case conversion may be inaccurate. Consider using '#align filter.tendsto.uniform_continuous_of_uniform_equicontinuous Filter.Tendsto.uniformContinuous_of_uniformEquicontinuousₓ'. -/
 /-- If `𝓕 : ι → β → α` tends to `f : β → α` *pointwise* along some nontrivial filter, and if the
 family `𝓕` is uniformly equicontinuous, then the limit is uniformly continuous. -/
 theorem Filter.Tendsto.uniformContinuous_of_uniformEquicontinuous {l : Filter ι} [l.ne_bot]
Diff
@@ -438,10 +438,7 @@ theorem Filter.HasBasis.equicontinuousAt_iff_right {κ : Type _} {p : κ → Pro
 #align filter.has_basis.equicontinuous_at_iff_right Filter.HasBasis.equicontinuousAt_iff_right
 
 /- warning: filter.has_basis.equicontinuous_at_iff -> Filter.HasBasis.equicontinuousAt_iff is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {X : Type.{u2}} {α : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u3} α] {κ₁ : Type.{u4}} {κ₂ : Type.{u5}} {p₁ : κ₁ -> Prop} {s₁ : κ₁ -> (Set.{u2} X)} {p₂ : κ₂ -> Prop} {s₂ : κ₂ -> (Set.{u3} (Prod.{u3, u3} α α))} {F : ι -> X -> α} {x₀ : X}, (Filter.HasBasis.{u2, succ u4} X κ₁ (nhds.{u2} X _inst_1 x₀) p₁ s₁) -> (Filter.HasBasis.{u3, succ u5} (Prod.{u3, u3} α α) κ₂ (uniformity.{u3} α _inst_4) p₂ s₂) -> (Iff (EquicontinuousAt.{u1, u2, u3} ι X α _inst_1 _inst_4 F x₀) (forall (k₂ : κ₂), (p₂ k₂) -> (Exists.{succ u4} κ₁ (fun (k₁ : κ₁) => Exists.{0} (p₁ k₁) (fun (_x : p₁ k₁) => forall (x : X), (Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) x (s₁ k₁)) -> (forall (i : ι), Membership.Mem.{u3, u3} (Prod.{u3, u3} α α) (Set.{u3} (Prod.{u3, u3} α α)) (Set.hasMem.{u3} (Prod.{u3, u3} α α)) (Prod.mk.{u3, u3} α α (F i x₀) (F i x)) (s₂ k₂)))))))
-but is expected to have type
-  forall {ι : Type.{u1}} {X : Type.{u3}} {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} X] [_inst_4 : UniformSpace.{u2} α] {κ₁ : Type.{u5}} {κ₂ : Type.{u4}} {p₁ : κ₁ -> Prop} {s₁ : κ₁ -> (Set.{u3} X)} {p₂ : κ₂ -> Prop} {s₂ : κ₂ -> (Set.{u2} (Prod.{u2, u2} α α))} {F : ι -> X -> α} {x₀ : X}, (Filter.HasBasis.{u3, succ u5} X κ₁ (nhds.{u3} X _inst_1 x₀) p₁ s₁) -> (Filter.HasBasis.{u2, succ u4} (Prod.{u2, u2} α α) κ₂ (uniformity.{u2} α _inst_4) p₂ s₂) -> (Iff (EquicontinuousAt.{u1, u3, u2} ι X α _inst_1 _inst_4 F x₀) (forall (k₂ : κ₂), (p₂ k₂) -> (Exists.{succ u5} κ₁ (fun (k₁ : κ₁) => And (p₁ k₁) (forall (x : X), (Membership.mem.{u3, u3} X (Set.{u3} X) (Set.instMembershipSet.{u3} X) x (s₁ k₁)) -> (forall (i : ι), Membership.mem.{u2, u2} (Prod.{u2, u2} α α) (Set.{u2} (Prod.{u2, u2} α α)) (Set.instMembershipSet.{u2} (Prod.{u2, u2} α α)) (Prod.mk.{u2, u2} α α (F i x₀) (F i x)) (s₂ k₂)))))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align filter.has_basis.equicontinuous_at_iff Filter.HasBasis.equicontinuousAt_iffₓ'. -/
 theorem Filter.HasBasis.equicontinuousAt_iff {κ₁ κ₂ : Type _} {p₁ : κ₁ → Prop} {s₁ : κ₁ → Set X}
     {p₂ : κ₂ → Prop} {s₂ : κ₂ → Set (α × α)} {F : ι → X → α} {x₀ : X} (hX : (𝓝 x₀).HasBasis p₁ s₁)
@@ -487,10 +484,7 @@ theorem Filter.HasBasis.uniformEquicontinuous_iff_right {κ : Type _} {p : κ 
 #align filter.has_basis.uniform_equicontinuous_iff_right Filter.HasBasis.uniformEquicontinuous_iff_right
 
 /- warning: filter.has_basis.uniform_equicontinuous_iff -> Filter.HasBasis.uniformEquicontinuous_iff is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u3} β] {κ₁ : Type.{u4}} {κ₂ : Type.{u5}} {p₁ : κ₁ -> Prop} {s₁ : κ₁ -> (Set.{u3} (Prod.{u3, u3} β β))} {p₂ : κ₂ -> Prop} {s₂ : κ₂ -> (Set.{u2} (Prod.{u2, u2} α α))} {F : ι -> β -> α}, (Filter.HasBasis.{u3, succ u4} (Prod.{u3, u3} β β) κ₁ (uniformity.{u3} β _inst_5) p₁ s₁) -> (Filter.HasBasis.{u2, succ u5} (Prod.{u2, u2} α α) κ₂ (uniformity.{u2} α _inst_4) p₂ s₂) -> (Iff (UniformEquicontinuous.{u1, u2, u3} ι α β _inst_4 _inst_5 F) (forall (k₂ : κ₂), (p₂ k₂) -> (Exists.{succ u4} κ₁ (fun (k₁ : κ₁) => Exists.{0} (p₁ k₁) (fun (_x : p₁ k₁) => forall (x : β) (y : β), (Membership.Mem.{u3, u3} (Prod.{u3, u3} β β) (Set.{u3} (Prod.{u3, u3} β β)) (Set.hasMem.{u3} (Prod.{u3, u3} β β)) (Prod.mk.{u3, u3} β β x y) (s₁ k₁)) -> (forall (i : ι), Membership.Mem.{u2, u2} (Prod.{u2, u2} α α) (Set.{u2} (Prod.{u2, u2} α α)) (Set.hasMem.{u2} (Prod.{u2, u2} α α)) (Prod.mk.{u2, u2} α α (F i x) (F i y)) (s₂ k₂)))))))
-but is expected to have type
-  forall {ι : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u3} β] {κ₁ : Type.{u5}} {κ₂ : Type.{u4}} {p₁ : κ₁ -> Prop} {s₁ : κ₁ -> (Set.{u3} (Prod.{u3, u3} β β))} {p₂ : κ₂ -> Prop} {s₂ : κ₂ -> (Set.{u2} (Prod.{u2, u2} α α))} {F : ι -> β -> α}, (Filter.HasBasis.{u3, succ u5} (Prod.{u3, u3} β β) κ₁ (uniformity.{u3} β _inst_5) p₁ s₁) -> (Filter.HasBasis.{u2, succ u4} (Prod.{u2, u2} α α) κ₂ (uniformity.{u2} α _inst_4) p₂ s₂) -> (Iff (UniformEquicontinuous.{u1, u2, u3} ι α β _inst_4 _inst_5 F) (forall (k₂ : κ₂), (p₂ k₂) -> (Exists.{succ u5} κ₁ (fun (k₁ : κ₁) => And (p₁ k₁) (forall (x : β) (y : β), (Membership.mem.{u3, u3} (Prod.{u3, u3} β β) (Set.{u3} (Prod.{u3, u3} β β)) (Set.instMembershipSet.{u3} (Prod.{u3, u3} β β)) (Prod.mk.{u3, u3} β β x y) (s₁ k₁)) -> (forall (i : ι), Membership.mem.{u2, u2} (Prod.{u2, u2} α α) (Set.{u2} (Prod.{u2, u2} α α)) (Set.instMembershipSet.{u2} (Prod.{u2, u2} α α)) (Prod.mk.{u2, u2} α α (F i x) (F i y)) (s₂ k₂)))))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align filter.has_basis.uniform_equicontinuous_iff Filter.HasBasis.uniformEquicontinuous_iffₓ'. -/
 theorem Filter.HasBasis.uniformEquicontinuous_iff {κ₁ κ₂ : Type _} {p₁ : κ₁ → Prop}
     {s₁ : κ₁ → Set (β × β)} {p₂ : κ₂ → Prop} {s₂ : κ₂ → Set (α × α)} {F : ι → β → α}
Diff
@@ -366,7 +366,7 @@ open UniformFun
 lean 3 declaration is
   forall {ι : Type.{u1}} {X : Type.{u2}} {α : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u3} α] {F : ι -> X -> α} {x₀ : X}, Iff (EquicontinuousAt.{u1, u2, u3} ι X α _inst_1 _inst_4 F x₀) (ContinuousAt.{u2, max u1 u3} X (UniformFun.{u1, u3} ι α) _inst_1 (UniformFun.topologicalSpace.{u1, u3} ι α _inst_4) (Function.comp.{succ u2, max (succ u1) (succ u3), max (succ u1) (succ u3)} X (ι -> α) (UniformFun.{u1, u3} ι α) (coeFn.{max 1 (succ u1) (succ u3), max (succ u1) (succ u3)} (Equiv.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (ι -> α) (UniformFun.{u1, u3} ι α)) (fun (_x : Equiv.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (ι -> α) (UniformFun.{u1, u3} ι α)) => (ι -> α) -> (UniformFun.{u1, u3} ι α)) (Equiv.hasCoeToFun.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (ι -> α) (UniformFun.{u1, u3} ι α)) (UniformFun.ofFun.{u1, u3} ι α)) (Function.swap.{succ u1, succ u2, succ u3} ι X (fun (ᾰ : ι) (ᾰ : X) => α) F)) x₀)
 but is expected to have type
-  forall {ι : Type.{u3}} {X : Type.{u2}} {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u1} α] {F : ι -> X -> α} {x₀ : X}, Iff (EquicontinuousAt.{u3, u2, u1} ι X α _inst_1 _inst_4 F x₀) (ContinuousAt.{u2, max u3 u1} X (UniformFun.{u3, u1} ι α) _inst_1 (UniformFun.topologicalSpace.{u3, u1} ι α _inst_4) (Function.comp.{succ u2, max (succ u1) (succ u3), max (succ u3) (succ u1)} X (ι -> α) (UniformFun.{u3, u1} ι α) (FunLike.coe.{max (succ u1) (succ u3), max (succ u1) (succ u3), max (succ u1) (succ u3)} (Equiv.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (ι -> α) (UniformFun.{u3, u1} ι α)) (ι -> α) (fun (_x : ι -> α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : ι -> α) => UniformFun.{u3, u1} ι α) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (ι -> α) (UniformFun.{u3, u1} ι α)) (UniformFun.ofFun.{u3, u1} ι α)) (Function.swap.{succ u3, succ u2, succ u1} ι X (fun (ᾰ : ι) (ᾰ : X) => α) F)) x₀)
+  forall {ι : Type.{u3}} {X : Type.{u2}} {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u1} α] {F : ι -> X -> α} {x₀ : X}, Iff (EquicontinuousAt.{u3, u2, u1} ι X α _inst_1 _inst_4 F x₀) (ContinuousAt.{u2, max u3 u1} X (UniformFun.{u3, u1} ι α) _inst_1 (UniformFun.topologicalSpace.{u3, u1} ι α _inst_4) (Function.comp.{succ u2, max (succ u1) (succ u3), max (succ u3) (succ u1)} X (ι -> α) (UniformFun.{u3, u1} ι α) (FunLike.coe.{max (succ u1) (succ u3), max (succ u1) (succ u3), max (succ u1) (succ u3)} (Equiv.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (ι -> α) (UniformFun.{u3, u1} ι α)) (ι -> α) (fun (_x : ι -> α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : ι -> α) => UniformFun.{u3, u1} ι α) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (ι -> α) (UniformFun.{u3, u1} ι α)) (UniformFun.ofFun.{u3, u1} ι α)) (Function.swap.{succ u3, succ u2, succ u1} ι X (fun (ᾰ : ι) (ᾰ : X) => α) F)) x₀)
 Case conversion may be inaccurate. Consider using '#align equicontinuous_at_iff_continuous_at equicontinuousAt_iff_continuousAtₓ'. -/
 /-- A family `𝓕 : ι → X → α` is equicontinuous at `x₀` iff the function `swap 𝓕 : X → ι → α` is
 continuous at `x₀` *when `ι → α` is equipped with the topology of uniform convergence*. This is
@@ -381,7 +381,7 @@ theorem equicontinuousAt_iff_continuousAt {F : ι → X → α} {x₀ : X} :
 lean 3 declaration is
   forall {ι : Type.{u1}} {X : Type.{u2}} {α : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u3} α] {F : ι -> X -> α}, Iff (Equicontinuous.{u1, u2, u3} ι X α _inst_1 _inst_4 F) (Continuous.{u2, max u1 u3} X (UniformFun.{u1, u3} ι α) _inst_1 (UniformFun.topologicalSpace.{u1, u3} ι α _inst_4) (Function.comp.{succ u2, max (succ u1) (succ u3), max (succ u1) (succ u3)} X (ι -> α) (UniformFun.{u1, u3} ι α) (coeFn.{max 1 (succ u1) (succ u3), max (succ u1) (succ u3)} (Equiv.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (ι -> α) (UniformFun.{u1, u3} ι α)) (fun (_x : Equiv.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (ι -> α) (UniformFun.{u1, u3} ι α)) => (ι -> α) -> (UniformFun.{u1, u3} ι α)) (Equiv.hasCoeToFun.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (ι -> α) (UniformFun.{u1, u3} ι α)) (UniformFun.ofFun.{u1, u3} ι α)) (Function.swap.{succ u1, succ u2, succ u3} ι X (fun (ᾰ : ι) (ᾰ : X) => α) F)))
 but is expected to have type
-  forall {ι : Type.{u3}} {X : Type.{u2}} {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u1} α] {F : ι -> X -> α}, Iff (Equicontinuous.{u3, u2, u1} ι X α _inst_1 _inst_4 F) (Continuous.{u2, max u3 u1} X (UniformFun.{u3, u1} ι α) _inst_1 (UniformFun.topologicalSpace.{u3, u1} ι α _inst_4) (Function.comp.{succ u2, max (succ u1) (succ u3), max (succ u3) (succ u1)} X (ι -> α) (UniformFun.{u3, u1} ι α) (FunLike.coe.{max (succ u1) (succ u3), max (succ u1) (succ u3), max (succ u1) (succ u3)} (Equiv.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (ι -> α) (UniformFun.{u3, u1} ι α)) (ι -> α) (fun (_x : ι -> α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : ι -> α) => UniformFun.{u3, u1} ι α) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (ι -> α) (UniformFun.{u3, u1} ι α)) (UniformFun.ofFun.{u3, u1} ι α)) (Function.swap.{succ u3, succ u2, succ u1} ι X (fun (ᾰ : ι) (ᾰ : X) => α) F)))
+  forall {ι : Type.{u3}} {X : Type.{u2}} {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u1} α] {F : ι -> X -> α}, Iff (Equicontinuous.{u3, u2, u1} ι X α _inst_1 _inst_4 F) (Continuous.{u2, max u3 u1} X (UniformFun.{u3, u1} ι α) _inst_1 (UniformFun.topologicalSpace.{u3, u1} ι α _inst_4) (Function.comp.{succ u2, max (succ u1) (succ u3), max (succ u3) (succ u1)} X (ι -> α) (UniformFun.{u3, u1} ι α) (FunLike.coe.{max (succ u1) (succ u3), max (succ u1) (succ u3), max (succ u1) (succ u3)} (Equiv.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (ι -> α) (UniformFun.{u3, u1} ι α)) (ι -> α) (fun (_x : ι -> α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : ι -> α) => UniformFun.{u3, u1} ι α) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (ι -> α) (UniformFun.{u3, u1} ι α)) (UniformFun.ofFun.{u3, u1} ι α)) (Function.swap.{succ u3, succ u2, succ u1} ι X (fun (ᾰ : ι) (ᾰ : X) => α) F)))
 Case conversion may be inaccurate. Consider using '#align equicontinuous_iff_continuous equicontinuous_iff_continuousₓ'. -/
 /-- A family `𝓕 : ι → X → α` is equicontinuous iff the function `swap 𝓕 : X → ι → α` is
 continuous *when `ι → α` is equipped with the topology of uniform convergence*. This is
@@ -396,7 +396,7 @@ theorem equicontinuous_iff_continuous {F : ι → X → α} :
 lean 3 declaration is
   forall {ι : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u3} β] {F : ι -> β -> α}, Iff (UniformEquicontinuous.{u1, u2, u3} ι α β _inst_4 _inst_5 F) (UniformContinuous.{u3, max u1 u2} β (UniformFun.{u1, u2} ι α) _inst_5 (UniformFun.uniformSpace.{u1, u2} ι α _inst_4) (Function.comp.{succ u3, max (succ u1) (succ u2), max (succ u1) (succ u2)} β (ι -> α) (UniformFun.{u1, u2} ι α) (coeFn.{max 1 (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (ι -> α) (UniformFun.{u1, u2} ι α)) (fun (_x : Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (ι -> α) (UniformFun.{u1, u2} ι α)) => (ι -> α) -> (UniformFun.{u1, u2} ι α)) (Equiv.hasCoeToFun.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (ι -> α) (UniformFun.{u1, u2} ι α)) (UniformFun.ofFun.{u1, u2} ι α)) (Function.swap.{succ u1, succ u3, succ u2} ι β (fun (ᾰ : ι) (ᾰ : β) => α) F)))
 but is expected to have type
-  forall {ι : Type.{u3}} {α : Type.{u2}} {β : Type.{u1}} [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u1} β] {F : ι -> β -> α}, Iff (UniformEquicontinuous.{u3, u2, u1} ι α β _inst_4 _inst_5 F) (UniformContinuous.{u1, max u3 u2} β (UniformFun.{u3, u2} ι α) _inst_5 (UniformFun.uniformSpace.{u3, u2} ι α _inst_4) (Function.comp.{succ u1, max (succ u2) (succ u3), max (succ u3) (succ u2)} β (ι -> α) (UniformFun.{u3, u2} ι α) (FunLike.coe.{max (succ u2) (succ u3), max (succ u2) (succ u3), max (succ u2) (succ u3)} (Equiv.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (ι -> α) (UniformFun.{u3, u2} ι α)) (ι -> α) (fun (_x : ι -> α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : ι -> α) => UniformFun.{u3, u2} ι α) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (ι -> α) (UniformFun.{u3, u2} ι α)) (UniformFun.ofFun.{u3, u2} ι α)) (Function.swap.{succ u3, succ u1, succ u2} ι β (fun (ᾰ : ι) (ᾰ : β) => α) F)))
+  forall {ι : Type.{u3}} {α : Type.{u2}} {β : Type.{u1}} [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u1} β] {F : ι -> β -> α}, Iff (UniformEquicontinuous.{u3, u2, u1} ι α β _inst_4 _inst_5 F) (UniformContinuous.{u1, max u3 u2} β (UniformFun.{u3, u2} ι α) _inst_5 (UniformFun.uniformSpace.{u3, u2} ι α _inst_4) (Function.comp.{succ u1, max (succ u2) (succ u3), max (succ u3) (succ u2)} β (ι -> α) (UniformFun.{u3, u2} ι α) (FunLike.coe.{max (succ u2) (succ u3), max (succ u2) (succ u3), max (succ u2) (succ u3)} (Equiv.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (ι -> α) (UniformFun.{u3, u2} ι α)) (ι -> α) (fun (_x : ι -> α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : ι -> α) => UniformFun.{u3, u2} ι α) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (ι -> α) (UniformFun.{u3, u2} ι α)) (UniformFun.ofFun.{u3, u2} ι α)) (Function.swap.{succ u3, succ u1, succ u2} ι β (fun (ᾰ : ι) (ᾰ : β) => α) F)))
 Case conversion may be inaccurate. Consider using '#align uniform_equicontinuous_iff_uniform_continuous uniformEquicontinuous_iff_uniformContinuousₓ'. -/
 /-- A family `𝓕 : ι → β → α` is uniformly equicontinuous iff the function `swap 𝓕 : β → ι → α` is
 uniformly continuous *when `ι → α` is equipped with the uniform structure of uniform convergence*.
Diff
@@ -508,7 +508,7 @@ theorem Filter.HasBasis.uniformEquicontinuous_iff {κ₁ κ₂ : Type _} {p₁ :
 lean 3 declaration is
   forall {ι : Type.{u1}} {X : Type.{u2}} {α : Type.{u3}} {β : Type.{u4}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u3} α] [_inst_5 : UniformSpace.{u4} β] {F : ι -> X -> α} {x₀ : X} {u : α -> β}, (UniformInducing.{u3, u4} α β _inst_4 _inst_5 u) -> (Iff (EquicontinuousAt.{u1, u2, u3} ι X α _inst_1 _inst_4 F x₀) (EquicontinuousAt.{u1, u2, u4} ι X β _inst_1 _inst_5 (Function.comp.{succ u1, max (succ u2) (succ u3), max (succ u2) (succ u4)} ι (X -> α) (X -> β) (Function.comp.{succ u2, succ u3, succ u4} X α β u) F) x₀))
 but is expected to have type
-  forall {ι : Type.{u2}} {X : Type.{u1}} {α : Type.{u4}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : UniformSpace.{u4} α] [_inst_5 : UniformSpace.{u3} β] {F : ι -> X -> α} {x₀ : X} {u : α -> β}, (UniformInducing.{u4, u3} α β _inst_4 _inst_5 u) -> (Iff (EquicontinuousAt.{u2, u1, u4} ι X α _inst_1 _inst_4 F x₀) (EquicontinuousAt.{u2, u1, u3} ι X β _inst_1 _inst_5 (Function.comp.{succ u2, max (succ u4) (succ u1), max (succ u3) (succ u1)} ι (X -> α) (X -> β) ((fun (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3102 : α -> β) (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3104 : X -> α) => Function.comp.{succ u1, succ u4, succ u3} X α β x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3102 x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3104) u) F) x₀))
+  forall {ι : Type.{u2}} {X : Type.{u1}} {α : Type.{u4}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : UniformSpace.{u4} α] [_inst_5 : UniformSpace.{u3} β] {F : ι -> X -> α} {x₀ : X} {u : α -> β}, (UniformInducing.{u4, u3} α β _inst_4 _inst_5 u) -> (Iff (EquicontinuousAt.{u2, u1, u4} ι X α _inst_1 _inst_4 F x₀) (EquicontinuousAt.{u2, u1, u3} ι X β _inst_1 _inst_5 (Function.comp.{succ u2, max (succ u4) (succ u1), max (succ u3) (succ u1)} ι (X -> α) (X -> β) ((fun (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3100 : α -> β) (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3102 : X -> α) => Function.comp.{succ u1, succ u4, succ u3} X α β x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3100 x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3102) u) F) x₀))
 Case conversion may be inaccurate. Consider using '#align uniform_inducing.equicontinuous_at_iff UniformInducing.equicontinuousAt_iffₓ'. -/
 /-- Given `u : α → β` a uniform inducing map, a family `𝓕 : ι → X → α` is equicontinuous at a point
 `x₀ : X` iff the family `𝓕'`, obtained by precomposing each function of `𝓕` by `u`, is
@@ -525,7 +525,7 @@ theorem UniformInducing.equicontinuousAt_iff {F : ι → X → α} {x₀ : X} {u
 lean 3 declaration is
   forall {ι : Type.{u1}} {X : Type.{u2}} {α : Type.{u3}} {β : Type.{u4}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u3} α] [_inst_5 : UniformSpace.{u4} β] {F : ι -> X -> α} {u : α -> β}, (UniformInducing.{u3, u4} α β _inst_4 _inst_5 u) -> (Iff (Equicontinuous.{u1, u2, u3} ι X α _inst_1 _inst_4 F) (Equicontinuous.{u1, u2, u4} ι X β _inst_1 _inst_5 (Function.comp.{succ u1, max (succ u2) (succ u3), max (succ u2) (succ u4)} ι (X -> α) (X -> β) (Function.comp.{succ u2, succ u3, succ u4} X α β u) F)))
 but is expected to have type
-  forall {ι : Type.{u2}} {X : Type.{u1}} {α : Type.{u4}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : UniformSpace.{u4} α] [_inst_5 : UniformSpace.{u3} β] {F : ι -> X -> α} {u : α -> β}, (UniformInducing.{u4, u3} α β _inst_4 _inst_5 u) -> (Iff (Equicontinuous.{u2, u1, u4} ι X α _inst_1 _inst_4 F) (Equicontinuous.{u2, u1, u3} ι X β _inst_1 _inst_5 (Function.comp.{succ u2, max (succ u4) (succ u1), max (succ u3) (succ u1)} ι (X -> α) (X -> β) ((fun (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3238 : α -> β) (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3240 : X -> α) => Function.comp.{succ u1, succ u4, succ u3} X α β x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3238 x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3240) u) F)))
+  forall {ι : Type.{u2}} {X : Type.{u1}} {α : Type.{u4}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : UniformSpace.{u4} α] [_inst_5 : UniformSpace.{u3} β] {F : ι -> X -> α} {u : α -> β}, (UniformInducing.{u4, u3} α β _inst_4 _inst_5 u) -> (Iff (Equicontinuous.{u2, u1, u4} ι X α _inst_1 _inst_4 F) (Equicontinuous.{u2, u1, u3} ι X β _inst_1 _inst_5 (Function.comp.{succ u2, max (succ u4) (succ u1), max (succ u3) (succ u1)} ι (X -> α) (X -> β) ((fun (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3236 : α -> β) (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3238 : X -> α) => Function.comp.{succ u1, succ u4, succ u3} X α β x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3236 x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3238) u) F)))
 Case conversion may be inaccurate. Consider using '#align uniform_inducing.equicontinuous_iff UniformInducing.equicontinuous_iffₓ'. -/
 /- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:73:14: unsupported tactic `congrm #[[expr ∀ x, (_ : exprProp())]] -/
 /-- Given `u : α → β` a uniform inducing map, a family `𝓕 : ι → X → α` is equicontinuous iff the
@@ -542,7 +542,7 @@ theorem UniformInducing.equicontinuous_iff {F : ι → X → α} {u : α → β}
 lean 3 declaration is
   forall {ι : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} {γ : Type.{u4}} [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u3} β] [_inst_6 : UniformSpace.{u4} γ] {F : ι -> β -> α} {u : α -> γ}, (UniformInducing.{u2, u4} α γ _inst_4 _inst_6 u) -> (Iff (UniformEquicontinuous.{u1, u2, u3} ι α β _inst_4 _inst_5 F) (UniformEquicontinuous.{u1, u4, u3} ι γ β _inst_6 _inst_5 (Function.comp.{succ u1, max (succ u3) (succ u2), max (succ u3) (succ u4)} ι (β -> α) (β -> γ) (Function.comp.{succ u3, succ u2, succ u4} β α γ u) F)))
 but is expected to have type
-  forall {ι : Type.{u2}} {α : Type.{u4}} {β : Type.{u1}} {γ : Type.{u3}} [_inst_4 : UniformSpace.{u4} α] [_inst_5 : UniformSpace.{u1} β] [_inst_6 : UniformSpace.{u3} γ] {F : ι -> β -> α} {u : α -> γ}, (UniformInducing.{u4, u3} α γ _inst_4 _inst_6 u) -> (Iff (UniformEquicontinuous.{u2, u4, u1} ι α β _inst_4 _inst_5 F) (UniformEquicontinuous.{u2, u3, u1} ι γ β _inst_6 _inst_5 (Function.comp.{succ u2, max (succ u4) (succ u1), max (succ u1) (succ u3)} ι (β -> α) (β -> γ) ((fun (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3425 : α -> γ) (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3427 : β -> α) => Function.comp.{succ u1, succ u4, succ u3} β α γ x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3425 x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3427) u) F)))
+  forall {ι : Type.{u2}} {α : Type.{u4}} {β : Type.{u1}} {γ : Type.{u3}} [_inst_4 : UniformSpace.{u4} α] [_inst_5 : UniformSpace.{u1} β] [_inst_6 : UniformSpace.{u3} γ] {F : ι -> β -> α} {u : α -> γ}, (UniformInducing.{u4, u3} α γ _inst_4 _inst_6 u) -> (Iff (UniformEquicontinuous.{u2, u4, u1} ι α β _inst_4 _inst_5 F) (UniformEquicontinuous.{u2, u3, u1} ι γ β _inst_6 _inst_5 (Function.comp.{succ u2, max (succ u4) (succ u1), max (succ u1) (succ u3)} ι (β -> α) (β -> γ) ((fun (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3423 : α -> γ) (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3425 : β -> α) => Function.comp.{succ u1, succ u4, succ u3} β α γ x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3423 x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3425) u) F)))
 Case conversion may be inaccurate. Consider using '#align uniform_inducing.uniform_equicontinuous_iff UniformInducing.uniformEquicontinuous_iffₓ'. -/
 /-- Given `u : α → γ` a uniform inducing map, a family `𝓕 : ι → β → α` is uniformly equicontinuous
 iff the family `𝓕'`, obtained by precomposing each function of `𝓕` by `u`, is uniformly
Diff
@@ -508,7 +508,7 @@ theorem Filter.HasBasis.uniformEquicontinuous_iff {κ₁ κ₂ : Type _} {p₁ :
 lean 3 declaration is
   forall {ι : Type.{u1}} {X : Type.{u2}} {α : Type.{u3}} {β : Type.{u4}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u3} α] [_inst_5 : UniformSpace.{u4} β] {F : ι -> X -> α} {x₀ : X} {u : α -> β}, (UniformInducing.{u3, u4} α β _inst_4 _inst_5 u) -> (Iff (EquicontinuousAt.{u1, u2, u3} ι X α _inst_1 _inst_4 F x₀) (EquicontinuousAt.{u1, u2, u4} ι X β _inst_1 _inst_5 (Function.comp.{succ u1, max (succ u2) (succ u3), max (succ u2) (succ u4)} ι (X -> α) (X -> β) (Function.comp.{succ u2, succ u3, succ u4} X α β u) F) x₀))
 but is expected to have type
-  forall {ι : Type.{u2}} {X : Type.{u1}} {α : Type.{u4}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : UniformSpace.{u4} α] [_inst_5 : UniformSpace.{u3} β] {F : ι -> X -> α} {x₀ : X} {u : α -> β}, (UniformInducing.{u4, u3} α β _inst_4 _inst_5 u) -> (Iff (EquicontinuousAt.{u2, u1, u4} ι X α _inst_1 _inst_4 F x₀) (EquicontinuousAt.{u2, u1, u3} ι X β _inst_1 _inst_5 (Function.comp.{succ u2, max (succ u4) (succ u1), max (succ u3) (succ u1)} ι (X -> α) (X -> β) ((fun (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3103 : α -> β) (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3105 : X -> α) => Function.comp.{succ u1, succ u4, succ u3} X α β x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3103 x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3105) u) F) x₀))
+  forall {ι : Type.{u2}} {X : Type.{u1}} {α : Type.{u4}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : UniformSpace.{u4} α] [_inst_5 : UniformSpace.{u3} β] {F : ι -> X -> α} {x₀ : X} {u : α -> β}, (UniformInducing.{u4, u3} α β _inst_4 _inst_5 u) -> (Iff (EquicontinuousAt.{u2, u1, u4} ι X α _inst_1 _inst_4 F x₀) (EquicontinuousAt.{u2, u1, u3} ι X β _inst_1 _inst_5 (Function.comp.{succ u2, max (succ u4) (succ u1), max (succ u3) (succ u1)} ι (X -> α) (X -> β) ((fun (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3102 : α -> β) (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3104 : X -> α) => Function.comp.{succ u1, succ u4, succ u3} X α β x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3102 x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3104) u) F) x₀))
 Case conversion may be inaccurate. Consider using '#align uniform_inducing.equicontinuous_at_iff UniformInducing.equicontinuousAt_iffₓ'. -/
 /-- Given `u : α → β` a uniform inducing map, a family `𝓕 : ι → X → α` is equicontinuous at a point
 `x₀ : X` iff the family `𝓕'`, obtained by precomposing each function of `𝓕` by `u`, is
@@ -525,7 +525,7 @@ theorem UniformInducing.equicontinuousAt_iff {F : ι → X → α} {x₀ : X} {u
 lean 3 declaration is
   forall {ι : Type.{u1}} {X : Type.{u2}} {α : Type.{u3}} {β : Type.{u4}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u3} α] [_inst_5 : UniformSpace.{u4} β] {F : ι -> X -> α} {u : α -> β}, (UniformInducing.{u3, u4} α β _inst_4 _inst_5 u) -> (Iff (Equicontinuous.{u1, u2, u3} ι X α _inst_1 _inst_4 F) (Equicontinuous.{u1, u2, u4} ι X β _inst_1 _inst_5 (Function.comp.{succ u1, max (succ u2) (succ u3), max (succ u2) (succ u4)} ι (X -> α) (X -> β) (Function.comp.{succ u2, succ u3, succ u4} X α β u) F)))
 but is expected to have type
-  forall {ι : Type.{u2}} {X : Type.{u1}} {α : Type.{u4}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : UniformSpace.{u4} α] [_inst_5 : UniformSpace.{u3} β] {F : ι -> X -> α} {u : α -> β}, (UniformInducing.{u4, u3} α β _inst_4 _inst_5 u) -> (Iff (Equicontinuous.{u2, u1, u4} ι X α _inst_1 _inst_4 F) (Equicontinuous.{u2, u1, u3} ι X β _inst_1 _inst_5 (Function.comp.{succ u2, max (succ u4) (succ u1), max (succ u3) (succ u1)} ι (X -> α) (X -> β) ((fun (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3239 : α -> β) (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3241 : X -> α) => Function.comp.{succ u1, succ u4, succ u3} X α β x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3239 x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3241) u) F)))
+  forall {ι : Type.{u2}} {X : Type.{u1}} {α : Type.{u4}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : UniformSpace.{u4} α] [_inst_5 : UniformSpace.{u3} β] {F : ι -> X -> α} {u : α -> β}, (UniformInducing.{u4, u3} α β _inst_4 _inst_5 u) -> (Iff (Equicontinuous.{u2, u1, u4} ι X α _inst_1 _inst_4 F) (Equicontinuous.{u2, u1, u3} ι X β _inst_1 _inst_5 (Function.comp.{succ u2, max (succ u4) (succ u1), max (succ u3) (succ u1)} ι (X -> α) (X -> β) ((fun (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3238 : α -> β) (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3240 : X -> α) => Function.comp.{succ u1, succ u4, succ u3} X α β x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3238 x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3240) u) F)))
 Case conversion may be inaccurate. Consider using '#align uniform_inducing.equicontinuous_iff UniformInducing.equicontinuous_iffₓ'. -/
 /- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:73:14: unsupported tactic `congrm #[[expr ∀ x, (_ : exprProp())]] -/
 /-- Given `u : α → β` a uniform inducing map, a family `𝓕 : ι → X → α` is equicontinuous iff the
@@ -542,7 +542,7 @@ theorem UniformInducing.equicontinuous_iff {F : ι → X → α} {u : α → β}
 lean 3 declaration is
   forall {ι : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} {γ : Type.{u4}} [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u3} β] [_inst_6 : UniformSpace.{u4} γ] {F : ι -> β -> α} {u : α -> γ}, (UniformInducing.{u2, u4} α γ _inst_4 _inst_6 u) -> (Iff (UniformEquicontinuous.{u1, u2, u3} ι α β _inst_4 _inst_5 F) (UniformEquicontinuous.{u1, u4, u3} ι γ β _inst_6 _inst_5 (Function.comp.{succ u1, max (succ u3) (succ u2), max (succ u3) (succ u4)} ι (β -> α) (β -> γ) (Function.comp.{succ u3, succ u2, succ u4} β α γ u) F)))
 but is expected to have type
-  forall {ι : Type.{u2}} {α : Type.{u4}} {β : Type.{u1}} {γ : Type.{u3}} [_inst_4 : UniformSpace.{u4} α] [_inst_5 : UniformSpace.{u1} β] [_inst_6 : UniformSpace.{u3} γ] {F : ι -> β -> α} {u : α -> γ}, (UniformInducing.{u4, u3} α γ _inst_4 _inst_6 u) -> (Iff (UniformEquicontinuous.{u2, u4, u1} ι α β _inst_4 _inst_5 F) (UniformEquicontinuous.{u2, u3, u1} ι γ β _inst_6 _inst_5 (Function.comp.{succ u2, max (succ u4) (succ u1), max (succ u1) (succ u3)} ι (β -> α) (β -> γ) ((fun (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3426 : α -> γ) (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3428 : β -> α) => Function.comp.{succ u1, succ u4, succ u3} β α γ x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3426 x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3428) u) F)))
+  forall {ι : Type.{u2}} {α : Type.{u4}} {β : Type.{u1}} {γ : Type.{u3}} [_inst_4 : UniformSpace.{u4} α] [_inst_5 : UniformSpace.{u1} β] [_inst_6 : UniformSpace.{u3} γ] {F : ι -> β -> α} {u : α -> γ}, (UniformInducing.{u4, u3} α γ _inst_4 _inst_6 u) -> (Iff (UniformEquicontinuous.{u2, u4, u1} ι α β _inst_4 _inst_5 F) (UniformEquicontinuous.{u2, u3, u1} ι γ β _inst_6 _inst_5 (Function.comp.{succ u2, max (succ u4) (succ u1), max (succ u1) (succ u3)} ι (β -> α) (β -> γ) ((fun (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3425 : α -> γ) (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3427 : β -> α) => Function.comp.{succ u1, succ u4, succ u3} β α γ x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3425 x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3427) u) F)))
 Case conversion may be inaccurate. Consider using '#align uniform_inducing.uniform_equicontinuous_iff UniformInducing.uniformEquicontinuous_iffₓ'. -/
 /-- Given `u : α → γ` a uniform inducing map, a family `𝓕 : ι → β → α` is uniformly equicontinuous
 iff the family `𝓕'`, obtained by precomposing each function of `𝓕` by `u`, is uniformly
Diff
@@ -366,7 +366,7 @@ open UniformFun
 lean 3 declaration is
   forall {ι : Type.{u1}} {X : Type.{u2}} {α : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u3} α] {F : ι -> X -> α} {x₀ : X}, Iff (EquicontinuousAt.{u1, u2, u3} ι X α _inst_1 _inst_4 F x₀) (ContinuousAt.{u2, max u1 u3} X (UniformFun.{u1, u3} ι α) _inst_1 (UniformFun.topologicalSpace.{u1, u3} ι α _inst_4) (Function.comp.{succ u2, max (succ u1) (succ u3), max (succ u1) (succ u3)} X (ι -> α) (UniformFun.{u1, u3} ι α) (coeFn.{max 1 (succ u1) (succ u3), max (succ u1) (succ u3)} (Equiv.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (ι -> α) (UniformFun.{u1, u3} ι α)) (fun (_x : Equiv.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (ι -> α) (UniformFun.{u1, u3} ι α)) => (ι -> α) -> (UniformFun.{u1, u3} ι α)) (Equiv.hasCoeToFun.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (ι -> α) (UniformFun.{u1, u3} ι α)) (UniformFun.ofFun.{u1, u3} ι α)) (Function.swap.{succ u1, succ u2, succ u3} ι X (fun (ᾰ : ι) (ᾰ : X) => α) F)) x₀)
 but is expected to have type
-  forall {ι : Type.{u3}} {X : Type.{u2}} {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u1} α] {F : ι -> X -> α} {x₀ : X}, Iff (EquicontinuousAt.{u3, u2, u1} ι X α _inst_1 _inst_4 F x₀) (ContinuousAt.{u2, max u3 u1} X (UniformFun.{u3, u1} ι α) _inst_1 (UniformFun.topologicalSpace.{u3, u1} ι α _inst_4) (Function.comp.{succ u2, max (succ u1) (succ u3), max (succ u3) (succ u1)} X (ι -> α) (UniformFun.{u3, u1} ι α) (FunLike.coe.{max (succ u1) (succ u3), max (succ u1) (succ u3), max (succ u1) (succ u3)} (Equiv.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (ι -> α) (UniformFun.{u3, u1} ι α)) (ι -> α) (fun (_x : ι -> α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : ι -> α) => UniformFun.{u3, u1} ι α) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (ι -> α) (UniformFun.{u3, u1} ι α)) (UniformFun.ofFun.{u3, u1} ι α)) (Function.swap.{succ u3, succ u2, succ u1} ι X (fun (ᾰ : ι) (ᾰ : X) => α) F)) x₀)
+  forall {ι : Type.{u3}} {X : Type.{u2}} {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u1} α] {F : ι -> X -> α} {x₀ : X}, Iff (EquicontinuousAt.{u3, u2, u1} ι X α _inst_1 _inst_4 F x₀) (ContinuousAt.{u2, max u3 u1} X (UniformFun.{u3, u1} ι α) _inst_1 (UniformFun.topologicalSpace.{u3, u1} ι α _inst_4) (Function.comp.{succ u2, max (succ u1) (succ u3), max (succ u3) (succ u1)} X (ι -> α) (UniformFun.{u3, u1} ι α) (FunLike.coe.{max (succ u1) (succ u3), max (succ u1) (succ u3), max (succ u1) (succ u3)} (Equiv.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (ι -> α) (UniformFun.{u3, u1} ι α)) (ι -> α) (fun (_x : ι -> α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : ι -> α) => UniformFun.{u3, u1} ι α) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (ι -> α) (UniformFun.{u3, u1} ι α)) (UniformFun.ofFun.{u3, u1} ι α)) (Function.swap.{succ u3, succ u2, succ u1} ι X (fun (ᾰ : ι) (ᾰ : X) => α) F)) x₀)
 Case conversion may be inaccurate. Consider using '#align equicontinuous_at_iff_continuous_at equicontinuousAt_iff_continuousAtₓ'. -/
 /-- A family `𝓕 : ι → X → α` is equicontinuous at `x₀` iff the function `swap 𝓕 : X → ι → α` is
 continuous at `x₀` *when `ι → α` is equipped with the topology of uniform convergence*. This is
@@ -381,7 +381,7 @@ theorem equicontinuousAt_iff_continuousAt {F : ι → X → α} {x₀ : X} :
 lean 3 declaration is
   forall {ι : Type.{u1}} {X : Type.{u2}} {α : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u3} α] {F : ι -> X -> α}, Iff (Equicontinuous.{u1, u2, u3} ι X α _inst_1 _inst_4 F) (Continuous.{u2, max u1 u3} X (UniformFun.{u1, u3} ι α) _inst_1 (UniformFun.topologicalSpace.{u1, u3} ι α _inst_4) (Function.comp.{succ u2, max (succ u1) (succ u3), max (succ u1) (succ u3)} X (ι -> α) (UniformFun.{u1, u3} ι α) (coeFn.{max 1 (succ u1) (succ u3), max (succ u1) (succ u3)} (Equiv.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (ι -> α) (UniformFun.{u1, u3} ι α)) (fun (_x : Equiv.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (ι -> α) (UniformFun.{u1, u3} ι α)) => (ι -> α) -> (UniformFun.{u1, u3} ι α)) (Equiv.hasCoeToFun.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (ι -> α) (UniformFun.{u1, u3} ι α)) (UniformFun.ofFun.{u1, u3} ι α)) (Function.swap.{succ u1, succ u2, succ u3} ι X (fun (ᾰ : ι) (ᾰ : X) => α) F)))
 but is expected to have type
-  forall {ι : Type.{u3}} {X : Type.{u2}} {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u1} α] {F : ι -> X -> α}, Iff (Equicontinuous.{u3, u2, u1} ι X α _inst_1 _inst_4 F) (Continuous.{u2, max u3 u1} X (UniformFun.{u3, u1} ι α) _inst_1 (UniformFun.topologicalSpace.{u3, u1} ι α _inst_4) (Function.comp.{succ u2, max (succ u1) (succ u3), max (succ u3) (succ u1)} X (ι -> α) (UniformFun.{u3, u1} ι α) (FunLike.coe.{max (succ u1) (succ u3), max (succ u1) (succ u3), max (succ u1) (succ u3)} (Equiv.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (ι -> α) (UniformFun.{u3, u1} ι α)) (ι -> α) (fun (_x : ι -> α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : ι -> α) => UniformFun.{u3, u1} ι α) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (ι -> α) (UniformFun.{u3, u1} ι α)) (UniformFun.ofFun.{u3, u1} ι α)) (Function.swap.{succ u3, succ u2, succ u1} ι X (fun (ᾰ : ι) (ᾰ : X) => α) F)))
+  forall {ι : Type.{u3}} {X : Type.{u2}} {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u1} α] {F : ι -> X -> α}, Iff (Equicontinuous.{u3, u2, u1} ι X α _inst_1 _inst_4 F) (Continuous.{u2, max u3 u1} X (UniformFun.{u3, u1} ι α) _inst_1 (UniformFun.topologicalSpace.{u3, u1} ι α _inst_4) (Function.comp.{succ u2, max (succ u1) (succ u3), max (succ u3) (succ u1)} X (ι -> α) (UniformFun.{u3, u1} ι α) (FunLike.coe.{max (succ u1) (succ u3), max (succ u1) (succ u3), max (succ u1) (succ u3)} (Equiv.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (ι -> α) (UniformFun.{u3, u1} ι α)) (ι -> α) (fun (_x : ι -> α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : ι -> α) => UniformFun.{u3, u1} ι α) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (ι -> α) (UniformFun.{u3, u1} ι α)) (UniformFun.ofFun.{u3, u1} ι α)) (Function.swap.{succ u3, succ u2, succ u1} ι X (fun (ᾰ : ι) (ᾰ : X) => α) F)))
 Case conversion may be inaccurate. Consider using '#align equicontinuous_iff_continuous equicontinuous_iff_continuousₓ'. -/
 /-- A family `𝓕 : ι → X → α` is equicontinuous iff the function `swap 𝓕 : X → ι → α` is
 continuous *when `ι → α` is equipped with the topology of uniform convergence*. This is
@@ -396,7 +396,7 @@ theorem equicontinuous_iff_continuous {F : ι → X → α} :
 lean 3 declaration is
   forall {ι : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u3} β] {F : ι -> β -> α}, Iff (UniformEquicontinuous.{u1, u2, u3} ι α β _inst_4 _inst_5 F) (UniformContinuous.{u3, max u1 u2} β (UniformFun.{u1, u2} ι α) _inst_5 (UniformFun.uniformSpace.{u1, u2} ι α _inst_4) (Function.comp.{succ u3, max (succ u1) (succ u2), max (succ u1) (succ u2)} β (ι -> α) (UniformFun.{u1, u2} ι α) (coeFn.{max 1 (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (ι -> α) (UniformFun.{u1, u2} ι α)) (fun (_x : Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (ι -> α) (UniformFun.{u1, u2} ι α)) => (ι -> α) -> (UniformFun.{u1, u2} ι α)) (Equiv.hasCoeToFun.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (ι -> α) (UniformFun.{u1, u2} ι α)) (UniformFun.ofFun.{u1, u2} ι α)) (Function.swap.{succ u1, succ u3, succ u2} ι β (fun (ᾰ : ι) (ᾰ : β) => α) F)))
 but is expected to have type
-  forall {ι : Type.{u3}} {α : Type.{u2}} {β : Type.{u1}} [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u1} β] {F : ι -> β -> α}, Iff (UniformEquicontinuous.{u3, u2, u1} ι α β _inst_4 _inst_5 F) (UniformContinuous.{u1, max u3 u2} β (UniformFun.{u3, u2} ι α) _inst_5 (UniformFun.uniformSpace.{u3, u2} ι α _inst_4) (Function.comp.{succ u1, max (succ u2) (succ u3), max (succ u3) (succ u2)} β (ι -> α) (UniformFun.{u3, u2} ι α) (FunLike.coe.{max (succ u2) (succ u3), max (succ u2) (succ u3), max (succ u2) (succ u3)} (Equiv.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (ι -> α) (UniformFun.{u3, u2} ι α)) (ι -> α) (fun (_x : ι -> α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : ι -> α) => UniformFun.{u3, u2} ι α) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (ι -> α) (UniformFun.{u3, u2} ι α)) (UniformFun.ofFun.{u3, u2} ι α)) (Function.swap.{succ u3, succ u1, succ u2} ι β (fun (ᾰ : ι) (ᾰ : β) => α) F)))
+  forall {ι : Type.{u3}} {α : Type.{u2}} {β : Type.{u1}} [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u1} β] {F : ι -> β -> α}, Iff (UniformEquicontinuous.{u3, u2, u1} ι α β _inst_4 _inst_5 F) (UniformContinuous.{u1, max u3 u2} β (UniformFun.{u3, u2} ι α) _inst_5 (UniformFun.uniformSpace.{u3, u2} ι α _inst_4) (Function.comp.{succ u1, max (succ u2) (succ u3), max (succ u3) (succ u2)} β (ι -> α) (UniformFun.{u3, u2} ι α) (FunLike.coe.{max (succ u2) (succ u3), max (succ u2) (succ u3), max (succ u2) (succ u3)} (Equiv.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (ι -> α) (UniformFun.{u3, u2} ι α)) (ι -> α) (fun (_x : ι -> α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : ι -> α) => UniformFun.{u3, u2} ι α) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (ι -> α) (UniformFun.{u3, u2} ι α)) (UniformFun.ofFun.{u3, u2} ι α)) (Function.swap.{succ u3, succ u1, succ u2} ι β (fun (ᾰ : ι) (ᾰ : β) => α) F)))
 Case conversion may be inaccurate. Consider using '#align uniform_equicontinuous_iff_uniform_continuous uniformEquicontinuous_iff_uniformContinuousₓ'. -/
 /-- A family `𝓕 : ι → β → α` is uniformly equicontinuous iff the function `swap 𝓕 : β → ι → α` is
 uniformly continuous *when `ι → α` is equipped with the uniform structure of uniform convergence*.
@@ -508,7 +508,7 @@ theorem Filter.HasBasis.uniformEquicontinuous_iff {κ₁ κ₂ : Type _} {p₁ :
 lean 3 declaration is
   forall {ι : Type.{u1}} {X : Type.{u2}} {α : Type.{u3}} {β : Type.{u4}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u3} α] [_inst_5 : UniformSpace.{u4} β] {F : ι -> X -> α} {x₀ : X} {u : α -> β}, (UniformInducing.{u3, u4} α β _inst_4 _inst_5 u) -> (Iff (EquicontinuousAt.{u1, u2, u3} ι X α _inst_1 _inst_4 F x₀) (EquicontinuousAt.{u1, u2, u4} ι X β _inst_1 _inst_5 (Function.comp.{succ u1, max (succ u2) (succ u3), max (succ u2) (succ u4)} ι (X -> α) (X -> β) (Function.comp.{succ u2, succ u3, succ u4} X α β u) F) x₀))
 but is expected to have type
-  forall {ι : Type.{u2}} {X : Type.{u1}} {α : Type.{u4}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : UniformSpace.{u4} α] [_inst_5 : UniformSpace.{u3} β] {F : ι -> X -> α} {x₀ : X} {u : α -> β}, (UniformInducing.{u4, u3} α β _inst_4 _inst_5 u) -> (Iff (EquicontinuousAt.{u2, u1, u4} ι X α _inst_1 _inst_4 F x₀) (EquicontinuousAt.{u2, u1, u3} ι X β _inst_1 _inst_5 (Function.comp.{succ u2, max (succ u4) (succ u1), max (succ u3) (succ u1)} ι (X -> α) (X -> β) ((fun (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3088 : α -> β) (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3090 : X -> α) => Function.comp.{succ u1, succ u4, succ u3} X α β x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3088 x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3090) u) F) x₀))
+  forall {ι : Type.{u2}} {X : Type.{u1}} {α : Type.{u4}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : UniformSpace.{u4} α] [_inst_5 : UniformSpace.{u3} β] {F : ι -> X -> α} {x₀ : X} {u : α -> β}, (UniformInducing.{u4, u3} α β _inst_4 _inst_5 u) -> (Iff (EquicontinuousAt.{u2, u1, u4} ι X α _inst_1 _inst_4 F x₀) (EquicontinuousAt.{u2, u1, u3} ι X β _inst_1 _inst_5 (Function.comp.{succ u2, max (succ u4) (succ u1), max (succ u3) (succ u1)} ι (X -> α) (X -> β) ((fun (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3103 : α -> β) (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3105 : X -> α) => Function.comp.{succ u1, succ u4, succ u3} X α β x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3103 x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3105) u) F) x₀))
 Case conversion may be inaccurate. Consider using '#align uniform_inducing.equicontinuous_at_iff UniformInducing.equicontinuousAt_iffₓ'. -/
 /-- Given `u : α → β` a uniform inducing map, a family `𝓕 : ι → X → α` is equicontinuous at a point
 `x₀ : X` iff the family `𝓕'`, obtained by precomposing each function of `𝓕` by `u`, is
@@ -525,7 +525,7 @@ theorem UniformInducing.equicontinuousAt_iff {F : ι → X → α} {x₀ : X} {u
 lean 3 declaration is
   forall {ι : Type.{u1}} {X : Type.{u2}} {α : Type.{u3}} {β : Type.{u4}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u3} α] [_inst_5 : UniformSpace.{u4} β] {F : ι -> X -> α} {u : α -> β}, (UniformInducing.{u3, u4} α β _inst_4 _inst_5 u) -> (Iff (Equicontinuous.{u1, u2, u3} ι X α _inst_1 _inst_4 F) (Equicontinuous.{u1, u2, u4} ι X β _inst_1 _inst_5 (Function.comp.{succ u1, max (succ u2) (succ u3), max (succ u2) (succ u4)} ι (X -> α) (X -> β) (Function.comp.{succ u2, succ u3, succ u4} X α β u) F)))
 but is expected to have type
-  forall {ι : Type.{u2}} {X : Type.{u1}} {α : Type.{u4}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : UniformSpace.{u4} α] [_inst_5 : UniformSpace.{u3} β] {F : ι -> X -> α} {u : α -> β}, (UniformInducing.{u4, u3} α β _inst_4 _inst_5 u) -> (Iff (Equicontinuous.{u2, u1, u4} ι X α _inst_1 _inst_4 F) (Equicontinuous.{u2, u1, u3} ι X β _inst_1 _inst_5 (Function.comp.{succ u2, max (succ u4) (succ u1), max (succ u3) (succ u1)} ι (X -> α) (X -> β) ((fun (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3224 : α -> β) (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3226 : X -> α) => Function.comp.{succ u1, succ u4, succ u3} X α β x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3224 x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3226) u) F)))
+  forall {ι : Type.{u2}} {X : Type.{u1}} {α : Type.{u4}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : UniformSpace.{u4} α] [_inst_5 : UniformSpace.{u3} β] {F : ι -> X -> α} {u : α -> β}, (UniformInducing.{u4, u3} α β _inst_4 _inst_5 u) -> (Iff (Equicontinuous.{u2, u1, u4} ι X α _inst_1 _inst_4 F) (Equicontinuous.{u2, u1, u3} ι X β _inst_1 _inst_5 (Function.comp.{succ u2, max (succ u4) (succ u1), max (succ u3) (succ u1)} ι (X -> α) (X -> β) ((fun (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3239 : α -> β) (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3241 : X -> α) => Function.comp.{succ u1, succ u4, succ u3} X α β x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3239 x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3241) u) F)))
 Case conversion may be inaccurate. Consider using '#align uniform_inducing.equicontinuous_iff UniformInducing.equicontinuous_iffₓ'. -/
 /- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:73:14: unsupported tactic `congrm #[[expr ∀ x, (_ : exprProp())]] -/
 /-- Given `u : α → β` a uniform inducing map, a family `𝓕 : ι → X → α` is equicontinuous iff the
@@ -542,7 +542,7 @@ theorem UniformInducing.equicontinuous_iff {F : ι → X → α} {u : α → β}
 lean 3 declaration is
   forall {ι : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} {γ : Type.{u4}} [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u3} β] [_inst_6 : UniformSpace.{u4} γ] {F : ι -> β -> α} {u : α -> γ}, (UniformInducing.{u2, u4} α γ _inst_4 _inst_6 u) -> (Iff (UniformEquicontinuous.{u1, u2, u3} ι α β _inst_4 _inst_5 F) (UniformEquicontinuous.{u1, u4, u3} ι γ β _inst_6 _inst_5 (Function.comp.{succ u1, max (succ u3) (succ u2), max (succ u3) (succ u4)} ι (β -> α) (β -> γ) (Function.comp.{succ u3, succ u2, succ u4} β α γ u) F)))
 but is expected to have type
-  forall {ι : Type.{u2}} {α : Type.{u4}} {β : Type.{u1}} {γ : Type.{u3}} [_inst_4 : UniformSpace.{u4} α] [_inst_5 : UniformSpace.{u1} β] [_inst_6 : UniformSpace.{u3} γ] {F : ι -> β -> α} {u : α -> γ}, (UniformInducing.{u4, u3} α γ _inst_4 _inst_6 u) -> (Iff (UniformEquicontinuous.{u2, u4, u1} ι α β _inst_4 _inst_5 F) (UniformEquicontinuous.{u2, u3, u1} ι γ β _inst_6 _inst_5 (Function.comp.{succ u2, max (succ u4) (succ u1), max (succ u1) (succ u3)} ι (β -> α) (β -> γ) ((fun (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3411 : α -> γ) (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3413 : β -> α) => Function.comp.{succ u1, succ u4, succ u3} β α γ x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3411 x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3413) u) F)))
+  forall {ι : Type.{u2}} {α : Type.{u4}} {β : Type.{u1}} {γ : Type.{u3}} [_inst_4 : UniformSpace.{u4} α] [_inst_5 : UniformSpace.{u1} β] [_inst_6 : UniformSpace.{u3} γ] {F : ι -> β -> α} {u : α -> γ}, (UniformInducing.{u4, u3} α γ _inst_4 _inst_6 u) -> (Iff (UniformEquicontinuous.{u2, u4, u1} ι α β _inst_4 _inst_5 F) (UniformEquicontinuous.{u2, u3, u1} ι γ β _inst_6 _inst_5 (Function.comp.{succ u2, max (succ u4) (succ u1), max (succ u1) (succ u3)} ι (β -> α) (β -> γ) ((fun (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3426 : α -> γ) (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3428 : β -> α) => Function.comp.{succ u1, succ u4, succ u3} β α γ x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3426 x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3428) u) F)))
 Case conversion may be inaccurate. Consider using '#align uniform_inducing.uniform_equicontinuous_iff UniformInducing.uniformEquicontinuous_iffₓ'. -/
 /-- Given `u : α → γ` a uniform inducing map, a family `𝓕 : ι → β → α` is uniformly equicontinuous
 iff the family `𝓕'`, obtained by precomposing each function of `𝓕` by `u`, is uniformly
Diff
@@ -411,7 +411,7 @@ theorem uniformEquicontinuous_iff_uniformContinuous {F : ι → β → α} :
 lean 3 declaration is
   forall {ι : Type.{u1}} {X : Type.{u2}} {α : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u3} α] {κ : Type.{u4}} {p : κ -> Prop} {s : κ -> (Set.{u2} X)} {F : ι -> X -> α} {x₀ : X}, (Filter.HasBasis.{u2, succ u4} X κ (nhds.{u2} X _inst_1 x₀) p s) -> (Iff (EquicontinuousAt.{u1, u2, u3} ι X α _inst_1 _inst_4 F x₀) (forall (U : Set.{u3} (Prod.{u3, u3} α α)), (Membership.Mem.{u3, u3} (Set.{u3} (Prod.{u3, u3} α α)) (Filter.{u3} (Prod.{u3, u3} α α)) (Filter.hasMem.{u3} (Prod.{u3, u3} α α)) U (uniformity.{u3} α _inst_4)) -> (Exists.{succ u4} κ (fun (k : κ) => Exists.{0} (p k) (fun (_x : p k) => forall (x : X), (Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) x (s k)) -> (forall (i : ι), Membership.Mem.{u3, u3} (Prod.{u3, u3} α α) (Set.{u3} (Prod.{u3, u3} α α)) (Set.hasMem.{u3} (Prod.{u3, u3} α α)) (Prod.mk.{u3, u3} α α (F i x₀) (F i x)) U))))))
 but is expected to have type
-  forall {ι : Type.{u2}} {X : Type.{u3}} {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} X] [_inst_4 : UniformSpace.{u1} α] {κ : Type.{u4}} {p : κ -> Prop} {s : κ -> (Set.{u3} X)} {F : ι -> X -> α} {x₀ : X}, (Filter.HasBasis.{u3, succ u4} X κ (nhds.{u3} X _inst_1 x₀) p s) -> (Iff (EquicontinuousAt.{u2, u3, u1} ι X α _inst_1 _inst_4 F x₀) (forall (U : Set.{u1} (Prod.{u1, u1} α α)), (Membership.mem.{u1, u1} (Set.{u1} (Prod.{u1, u1} α α)) (Filter.{u1} (Prod.{u1, u1} α α)) (instMembershipSetFilter.{u1} (Prod.{u1, u1} α α)) U (uniformity.{u1} α _inst_4)) -> (Exists.{succ u4} κ (fun (k : κ) => Exists.{0} (p k) (fun (_x : p k) => forall (x : X), (Membership.mem.{u3, u3} X (Set.{u3} X) (Set.instMembershipSet.{u3} X) x (s k)) -> (forall (i : ι), Membership.mem.{u1, u1} (Prod.{u1, u1} α α) (Set.{u1} (Prod.{u1, u1} α α)) (Set.instMembershipSet.{u1} (Prod.{u1, u1} α α)) (Prod.mk.{u1, u1} α α (F i x₀) (F i x)) U))))))
+  forall {ι : Type.{u2}} {X : Type.{u3}} {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} X] [_inst_4 : UniformSpace.{u1} α] {κ : Type.{u4}} {p : κ -> Prop} {s : κ -> (Set.{u3} X)} {F : ι -> X -> α} {x₀ : X}, (Filter.HasBasis.{u3, succ u4} X κ (nhds.{u3} X _inst_1 x₀) p s) -> (Iff (EquicontinuousAt.{u2, u3, u1} ι X α _inst_1 _inst_4 F x₀) (forall (U : Set.{u1} (Prod.{u1, u1} α α)), (Membership.mem.{u1, u1} (Set.{u1} (Prod.{u1, u1} α α)) (Filter.{u1} (Prod.{u1, u1} α α)) (instMembershipSetFilter.{u1} (Prod.{u1, u1} α α)) U (uniformity.{u1} α _inst_4)) -> (Exists.{succ u4} κ (fun (k : κ) => And (p k) (forall (x : X), (Membership.mem.{u3, u3} X (Set.{u3} X) (Set.instMembershipSet.{u3} X) x (s k)) -> (forall (i : ι), Membership.mem.{u1, u1} (Prod.{u1, u1} α α) (Set.{u1} (Prod.{u1, u1} α α)) (Set.instMembershipSet.{u1} (Prod.{u1, u1} α α)) (Prod.mk.{u1, u1} α α (F i x₀) (F i x)) U))))))
 Case conversion may be inaccurate. Consider using '#align filter.has_basis.equicontinuous_at_iff_left Filter.HasBasis.equicontinuousAt_iff_leftₓ'. -/
 theorem Filter.HasBasis.equicontinuousAt_iff_left {κ : Type _} {p : κ → Prop} {s : κ → Set X}
     {F : ι → X → α} {x₀ : X} (hX : (𝓝 x₀).HasBasis p s) :
@@ -441,7 +441,7 @@ theorem Filter.HasBasis.equicontinuousAt_iff_right {κ : Type _} {p : κ → Pro
 lean 3 declaration is
   forall {ι : Type.{u1}} {X : Type.{u2}} {α : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u3} α] {κ₁ : Type.{u4}} {κ₂ : Type.{u5}} {p₁ : κ₁ -> Prop} {s₁ : κ₁ -> (Set.{u2} X)} {p₂ : κ₂ -> Prop} {s₂ : κ₂ -> (Set.{u3} (Prod.{u3, u3} α α))} {F : ι -> X -> α} {x₀ : X}, (Filter.HasBasis.{u2, succ u4} X κ₁ (nhds.{u2} X _inst_1 x₀) p₁ s₁) -> (Filter.HasBasis.{u3, succ u5} (Prod.{u3, u3} α α) κ₂ (uniformity.{u3} α _inst_4) p₂ s₂) -> (Iff (EquicontinuousAt.{u1, u2, u3} ι X α _inst_1 _inst_4 F x₀) (forall (k₂ : κ₂), (p₂ k₂) -> (Exists.{succ u4} κ₁ (fun (k₁ : κ₁) => Exists.{0} (p₁ k₁) (fun (_x : p₁ k₁) => forall (x : X), (Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) x (s₁ k₁)) -> (forall (i : ι), Membership.Mem.{u3, u3} (Prod.{u3, u3} α α) (Set.{u3} (Prod.{u3, u3} α α)) (Set.hasMem.{u3} (Prod.{u3, u3} α α)) (Prod.mk.{u3, u3} α α (F i x₀) (F i x)) (s₂ k₂)))))))
 but is expected to have type
-  forall {ι : Type.{u1}} {X : Type.{u3}} {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} X] [_inst_4 : UniformSpace.{u2} α] {κ₁ : Type.{u5}} {κ₂ : Type.{u4}} {p₁ : κ₁ -> Prop} {s₁ : κ₁ -> (Set.{u3} X)} {p₂ : κ₂ -> Prop} {s₂ : κ₂ -> (Set.{u2} (Prod.{u2, u2} α α))} {F : ι -> X -> α} {x₀ : X}, (Filter.HasBasis.{u3, succ u5} X κ₁ (nhds.{u3} X _inst_1 x₀) p₁ s₁) -> (Filter.HasBasis.{u2, succ u4} (Prod.{u2, u2} α α) κ₂ (uniformity.{u2} α _inst_4) p₂ s₂) -> (Iff (EquicontinuousAt.{u1, u3, u2} ι X α _inst_1 _inst_4 F x₀) (forall (k₂ : κ₂), (p₂ k₂) -> (Exists.{succ u5} κ₁ (fun (k₁ : κ₁) => Exists.{0} (p₁ k₁) (fun (_x : p₁ k₁) => forall (x : X), (Membership.mem.{u3, u3} X (Set.{u3} X) (Set.instMembershipSet.{u3} X) x (s₁ k₁)) -> (forall (i : ι), Membership.mem.{u2, u2} (Prod.{u2, u2} α α) (Set.{u2} (Prod.{u2, u2} α α)) (Set.instMembershipSet.{u2} (Prod.{u2, u2} α α)) (Prod.mk.{u2, u2} α α (F i x₀) (F i x)) (s₂ k₂)))))))
+  forall {ι : Type.{u1}} {X : Type.{u3}} {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} X] [_inst_4 : UniformSpace.{u2} α] {κ₁ : Type.{u5}} {κ₂ : Type.{u4}} {p₁ : κ₁ -> Prop} {s₁ : κ₁ -> (Set.{u3} X)} {p₂ : κ₂ -> Prop} {s₂ : κ₂ -> (Set.{u2} (Prod.{u2, u2} α α))} {F : ι -> X -> α} {x₀ : X}, (Filter.HasBasis.{u3, succ u5} X κ₁ (nhds.{u3} X _inst_1 x₀) p₁ s₁) -> (Filter.HasBasis.{u2, succ u4} (Prod.{u2, u2} α α) κ₂ (uniformity.{u2} α _inst_4) p₂ s₂) -> (Iff (EquicontinuousAt.{u1, u3, u2} ι X α _inst_1 _inst_4 F x₀) (forall (k₂ : κ₂), (p₂ k₂) -> (Exists.{succ u5} κ₁ (fun (k₁ : κ₁) => And (p₁ k₁) (forall (x : X), (Membership.mem.{u3, u3} X (Set.{u3} X) (Set.instMembershipSet.{u3} X) x (s₁ k₁)) -> (forall (i : ι), Membership.mem.{u2, u2} (Prod.{u2, u2} α α) (Set.{u2} (Prod.{u2, u2} α α)) (Set.instMembershipSet.{u2} (Prod.{u2, u2} α α)) (Prod.mk.{u2, u2} α α (F i x₀) (F i x)) (s₂ k₂)))))))
 Case conversion may be inaccurate. Consider using '#align filter.has_basis.equicontinuous_at_iff Filter.HasBasis.equicontinuousAt_iffₓ'. -/
 theorem Filter.HasBasis.equicontinuousAt_iff {κ₁ κ₂ : Type _} {p₁ : κ₁ → Prop} {s₁ : κ₁ → Set X}
     {p₂ : κ₂ → Prop} {s₂ : κ₂ → Set (α × α)} {F : ι → X → α} {x₀ : X} (hX : (𝓝 x₀).HasBasis p₁ s₁)
@@ -458,7 +458,7 @@ theorem Filter.HasBasis.equicontinuousAt_iff {κ₁ κ₂ : Type _} {p₁ : κ
 lean 3 declaration is
   forall {ι : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u3} β] {κ : Type.{u4}} {p : κ -> Prop} {s : κ -> (Set.{u3} (Prod.{u3, u3} β β))} {F : ι -> β -> α}, (Filter.HasBasis.{u3, succ u4} (Prod.{u3, u3} β β) κ (uniformity.{u3} β _inst_5) p s) -> (Iff (UniformEquicontinuous.{u1, u2, u3} ι α β _inst_4 _inst_5 F) (forall (U : Set.{u2} (Prod.{u2, u2} α α)), (Membership.Mem.{u2, u2} (Set.{u2} (Prod.{u2, u2} α α)) (Filter.{u2} (Prod.{u2, u2} α α)) (Filter.hasMem.{u2} (Prod.{u2, u2} α α)) U (uniformity.{u2} α _inst_4)) -> (Exists.{succ u4} κ (fun (k : κ) => Exists.{0} (p k) (fun (_x : p k) => forall (x : β) (y : β), (Membership.Mem.{u3, u3} (Prod.{u3, u3} β β) (Set.{u3} (Prod.{u3, u3} β β)) (Set.hasMem.{u3} (Prod.{u3, u3} β β)) (Prod.mk.{u3, u3} β β x y) (s k)) -> (forall (i : ι), Membership.Mem.{u2, u2} (Prod.{u2, u2} α α) (Set.{u2} (Prod.{u2, u2} α α)) (Set.hasMem.{u2} (Prod.{u2, u2} α α)) (Prod.mk.{u2, u2} α α (F i x) (F i y)) U))))))
 but is expected to have type
-  forall {ι : Type.{u2}} {α : Type.{u1}} {β : Type.{u3}} [_inst_4 : UniformSpace.{u1} α] [_inst_5 : UniformSpace.{u3} β] {κ : Type.{u4}} {p : κ -> Prop} {s : κ -> (Set.{u3} (Prod.{u3, u3} β β))} {F : ι -> β -> α}, (Filter.HasBasis.{u3, succ u4} (Prod.{u3, u3} β β) κ (uniformity.{u3} β _inst_5) p s) -> (Iff (UniformEquicontinuous.{u2, u1, u3} ι α β _inst_4 _inst_5 F) (forall (U : Set.{u1} (Prod.{u1, u1} α α)), (Membership.mem.{u1, u1} (Set.{u1} (Prod.{u1, u1} α α)) (Filter.{u1} (Prod.{u1, u1} α α)) (instMembershipSetFilter.{u1} (Prod.{u1, u1} α α)) U (uniformity.{u1} α _inst_4)) -> (Exists.{succ u4} κ (fun (k : κ) => Exists.{0} (p k) (fun (_x : p k) => forall (x : β) (y : β), (Membership.mem.{u3, u3} (Prod.{u3, u3} β β) (Set.{u3} (Prod.{u3, u3} β β)) (Set.instMembershipSet.{u3} (Prod.{u3, u3} β β)) (Prod.mk.{u3, u3} β β x y) (s k)) -> (forall (i : ι), Membership.mem.{u1, u1} (Prod.{u1, u1} α α) (Set.{u1} (Prod.{u1, u1} α α)) (Set.instMembershipSet.{u1} (Prod.{u1, u1} α α)) (Prod.mk.{u1, u1} α α (F i x) (F i y)) U))))))
+  forall {ι : Type.{u2}} {α : Type.{u1}} {β : Type.{u3}} [_inst_4 : UniformSpace.{u1} α] [_inst_5 : UniformSpace.{u3} β] {κ : Type.{u4}} {p : κ -> Prop} {s : κ -> (Set.{u3} (Prod.{u3, u3} β β))} {F : ι -> β -> α}, (Filter.HasBasis.{u3, succ u4} (Prod.{u3, u3} β β) κ (uniformity.{u3} β _inst_5) p s) -> (Iff (UniformEquicontinuous.{u2, u1, u3} ι α β _inst_4 _inst_5 F) (forall (U : Set.{u1} (Prod.{u1, u1} α α)), (Membership.mem.{u1, u1} (Set.{u1} (Prod.{u1, u1} α α)) (Filter.{u1} (Prod.{u1, u1} α α)) (instMembershipSetFilter.{u1} (Prod.{u1, u1} α α)) U (uniformity.{u1} α _inst_4)) -> (Exists.{succ u4} κ (fun (k : κ) => And (p k) (forall (x : β) (y : β), (Membership.mem.{u3, u3} (Prod.{u3, u3} β β) (Set.{u3} (Prod.{u3, u3} β β)) (Set.instMembershipSet.{u3} (Prod.{u3, u3} β β)) (Prod.mk.{u3, u3} β β x y) (s k)) -> (forall (i : ι), Membership.mem.{u1, u1} (Prod.{u1, u1} α α) (Set.{u1} (Prod.{u1, u1} α α)) (Set.instMembershipSet.{u1} (Prod.{u1, u1} α α)) (Prod.mk.{u1, u1} α α (F i x) (F i y)) U))))))
 Case conversion may be inaccurate. Consider using '#align filter.has_basis.uniform_equicontinuous_iff_left Filter.HasBasis.uniformEquicontinuous_iff_leftₓ'. -/
 theorem Filter.HasBasis.uniformEquicontinuous_iff_left {κ : Type _} {p : κ → Prop}
     {s : κ → Set (β × β)} {F : ι → β → α} (hβ : (𝓤 β).HasBasis p s) :
@@ -490,7 +490,7 @@ theorem Filter.HasBasis.uniformEquicontinuous_iff_right {κ : Type _} {p : κ 
 lean 3 declaration is
   forall {ι : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u3} β] {κ₁ : Type.{u4}} {κ₂ : Type.{u5}} {p₁ : κ₁ -> Prop} {s₁ : κ₁ -> (Set.{u3} (Prod.{u3, u3} β β))} {p₂ : κ₂ -> Prop} {s₂ : κ₂ -> (Set.{u2} (Prod.{u2, u2} α α))} {F : ι -> β -> α}, (Filter.HasBasis.{u3, succ u4} (Prod.{u3, u3} β β) κ₁ (uniformity.{u3} β _inst_5) p₁ s₁) -> (Filter.HasBasis.{u2, succ u5} (Prod.{u2, u2} α α) κ₂ (uniformity.{u2} α _inst_4) p₂ s₂) -> (Iff (UniformEquicontinuous.{u1, u2, u3} ι α β _inst_4 _inst_5 F) (forall (k₂ : κ₂), (p₂ k₂) -> (Exists.{succ u4} κ₁ (fun (k₁ : κ₁) => Exists.{0} (p₁ k₁) (fun (_x : p₁ k₁) => forall (x : β) (y : β), (Membership.Mem.{u3, u3} (Prod.{u3, u3} β β) (Set.{u3} (Prod.{u3, u3} β β)) (Set.hasMem.{u3} (Prod.{u3, u3} β β)) (Prod.mk.{u3, u3} β β x y) (s₁ k₁)) -> (forall (i : ι), Membership.Mem.{u2, u2} (Prod.{u2, u2} α α) (Set.{u2} (Prod.{u2, u2} α α)) (Set.hasMem.{u2} (Prod.{u2, u2} α α)) (Prod.mk.{u2, u2} α α (F i x) (F i y)) (s₂ k₂)))))))
 but is expected to have type
-  forall {ι : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u3} β] {κ₁ : Type.{u5}} {κ₂ : Type.{u4}} {p₁ : κ₁ -> Prop} {s₁ : κ₁ -> (Set.{u3} (Prod.{u3, u3} β β))} {p₂ : κ₂ -> Prop} {s₂ : κ₂ -> (Set.{u2} (Prod.{u2, u2} α α))} {F : ι -> β -> α}, (Filter.HasBasis.{u3, succ u5} (Prod.{u3, u3} β β) κ₁ (uniformity.{u3} β _inst_5) p₁ s₁) -> (Filter.HasBasis.{u2, succ u4} (Prod.{u2, u2} α α) κ₂ (uniformity.{u2} α _inst_4) p₂ s₂) -> (Iff (UniformEquicontinuous.{u1, u2, u3} ι α β _inst_4 _inst_5 F) (forall (k₂ : κ₂), (p₂ k₂) -> (Exists.{succ u5} κ₁ (fun (k₁ : κ₁) => Exists.{0} (p₁ k₁) (fun (_x : p₁ k₁) => forall (x : β) (y : β), (Membership.mem.{u3, u3} (Prod.{u3, u3} β β) (Set.{u3} (Prod.{u3, u3} β β)) (Set.instMembershipSet.{u3} (Prod.{u3, u3} β β)) (Prod.mk.{u3, u3} β β x y) (s₁ k₁)) -> (forall (i : ι), Membership.mem.{u2, u2} (Prod.{u2, u2} α α) (Set.{u2} (Prod.{u2, u2} α α)) (Set.instMembershipSet.{u2} (Prod.{u2, u2} α α)) (Prod.mk.{u2, u2} α α (F i x) (F i y)) (s₂ k₂)))))))
+  forall {ι : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u3} β] {κ₁ : Type.{u5}} {κ₂ : Type.{u4}} {p₁ : κ₁ -> Prop} {s₁ : κ₁ -> (Set.{u3} (Prod.{u3, u3} β β))} {p₂ : κ₂ -> Prop} {s₂ : κ₂ -> (Set.{u2} (Prod.{u2, u2} α α))} {F : ι -> β -> α}, (Filter.HasBasis.{u3, succ u5} (Prod.{u3, u3} β β) κ₁ (uniformity.{u3} β _inst_5) p₁ s₁) -> (Filter.HasBasis.{u2, succ u4} (Prod.{u2, u2} α α) κ₂ (uniformity.{u2} α _inst_4) p₂ s₂) -> (Iff (UniformEquicontinuous.{u1, u2, u3} ι α β _inst_4 _inst_5 F) (forall (k₂ : κ₂), (p₂ k₂) -> (Exists.{succ u5} κ₁ (fun (k₁ : κ₁) => And (p₁ k₁) (forall (x : β) (y : β), (Membership.mem.{u3, u3} (Prod.{u3, u3} β β) (Set.{u3} (Prod.{u3, u3} β β)) (Set.instMembershipSet.{u3} (Prod.{u3, u3} β β)) (Prod.mk.{u3, u3} β β x y) (s₁ k₁)) -> (forall (i : ι), Membership.mem.{u2, u2} (Prod.{u2, u2} α α) (Set.{u2} (Prod.{u2, u2} α α)) (Set.instMembershipSet.{u2} (Prod.{u2, u2} α α)) (Prod.mk.{u2, u2} α α (F i x) (F i y)) (s₂ k₂)))))))
 Case conversion may be inaccurate. Consider using '#align filter.has_basis.uniform_equicontinuous_iff Filter.HasBasis.uniformEquicontinuous_iffₓ'. -/
 theorem Filter.HasBasis.uniformEquicontinuous_iff {κ₁ κ₂ : Type _} {p₁ : κ₁ → Prop}
     {s₁ : κ₁ → Set (β × β)} {p₂ : κ₂ → Prop} {s₂ : κ₂ → Set (α × α)} {F : ι → β → α}
@@ -508,7 +508,7 @@ theorem Filter.HasBasis.uniformEquicontinuous_iff {κ₁ κ₂ : Type _} {p₁ :
 lean 3 declaration is
   forall {ι : Type.{u1}} {X : Type.{u2}} {α : Type.{u3}} {β : Type.{u4}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u3} α] [_inst_5 : UniformSpace.{u4} β] {F : ι -> X -> α} {x₀ : X} {u : α -> β}, (UniformInducing.{u3, u4} α β _inst_4 _inst_5 u) -> (Iff (EquicontinuousAt.{u1, u2, u3} ι X α _inst_1 _inst_4 F x₀) (EquicontinuousAt.{u1, u2, u4} ι X β _inst_1 _inst_5 (Function.comp.{succ u1, max (succ u2) (succ u3), max (succ u2) (succ u4)} ι (X -> α) (X -> β) (Function.comp.{succ u2, succ u3, succ u4} X α β u) F) x₀))
 but is expected to have type
-  forall {ι : Type.{u2}} {X : Type.{u1}} {α : Type.{u4}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : UniformSpace.{u4} α] [_inst_5 : UniformSpace.{u3} β] {F : ι -> X -> α} {x₀ : X} {u : α -> β}, (UniformInducing.{u4, u3} α β _inst_4 _inst_5 u) -> (Iff (EquicontinuousAt.{u2, u1, u4} ι X α _inst_1 _inst_4 F x₀) (EquicontinuousAt.{u2, u1, u3} ι X β _inst_1 _inst_5 (Function.comp.{succ u2, max (succ u4) (succ u1), max (succ u3) (succ u1)} ι (X -> α) (X -> β) ((fun (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3096 : α -> β) (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3098 : X -> α) => Function.comp.{succ u1, succ u4, succ u3} X α β x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3096 x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3098) u) F) x₀))
+  forall {ι : Type.{u2}} {X : Type.{u1}} {α : Type.{u4}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : UniformSpace.{u4} α] [_inst_5 : UniformSpace.{u3} β] {F : ι -> X -> α} {x₀ : X} {u : α -> β}, (UniformInducing.{u4, u3} α β _inst_4 _inst_5 u) -> (Iff (EquicontinuousAt.{u2, u1, u4} ι X α _inst_1 _inst_4 F x₀) (EquicontinuousAt.{u2, u1, u3} ι X β _inst_1 _inst_5 (Function.comp.{succ u2, max (succ u4) (succ u1), max (succ u3) (succ u1)} ι (X -> α) (X -> β) ((fun (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3088 : α -> β) (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3090 : X -> α) => Function.comp.{succ u1, succ u4, succ u3} X α β x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3088 x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3090) u) F) x₀))
 Case conversion may be inaccurate. Consider using '#align uniform_inducing.equicontinuous_at_iff UniformInducing.equicontinuousAt_iffₓ'. -/
 /-- Given `u : α → β` a uniform inducing map, a family `𝓕 : ι → X → α` is equicontinuous at a point
 `x₀ : X` iff the family `𝓕'`, obtained by precomposing each function of `𝓕` by `u`, is
@@ -525,7 +525,7 @@ theorem UniformInducing.equicontinuousAt_iff {F : ι → X → α} {x₀ : X} {u
 lean 3 declaration is
   forall {ι : Type.{u1}} {X : Type.{u2}} {α : Type.{u3}} {β : Type.{u4}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u3} α] [_inst_5 : UniformSpace.{u4} β] {F : ι -> X -> α} {u : α -> β}, (UniformInducing.{u3, u4} α β _inst_4 _inst_5 u) -> (Iff (Equicontinuous.{u1, u2, u3} ι X α _inst_1 _inst_4 F) (Equicontinuous.{u1, u2, u4} ι X β _inst_1 _inst_5 (Function.comp.{succ u1, max (succ u2) (succ u3), max (succ u2) (succ u4)} ι (X -> α) (X -> β) (Function.comp.{succ u2, succ u3, succ u4} X α β u) F)))
 but is expected to have type
-  forall {ι : Type.{u2}} {X : Type.{u1}} {α : Type.{u4}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : UniformSpace.{u4} α] [_inst_5 : UniformSpace.{u3} β] {F : ι -> X -> α} {u : α -> β}, (UniformInducing.{u4, u3} α β _inst_4 _inst_5 u) -> (Iff (Equicontinuous.{u2, u1, u4} ι X α _inst_1 _inst_4 F) (Equicontinuous.{u2, u1, u3} ι X β _inst_1 _inst_5 (Function.comp.{succ u2, max (succ u4) (succ u1), max (succ u3) (succ u1)} ι (X -> α) (X -> β) ((fun (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3235 : α -> β) (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3237 : X -> α) => Function.comp.{succ u1, succ u4, succ u3} X α β x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3235 x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3237) u) F)))
+  forall {ι : Type.{u2}} {X : Type.{u1}} {α : Type.{u4}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : UniformSpace.{u4} α] [_inst_5 : UniformSpace.{u3} β] {F : ι -> X -> α} {u : α -> β}, (UniformInducing.{u4, u3} α β _inst_4 _inst_5 u) -> (Iff (Equicontinuous.{u2, u1, u4} ι X α _inst_1 _inst_4 F) (Equicontinuous.{u2, u1, u3} ι X β _inst_1 _inst_5 (Function.comp.{succ u2, max (succ u4) (succ u1), max (succ u3) (succ u1)} ι (X -> α) (X -> β) ((fun (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3224 : α -> β) (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3226 : X -> α) => Function.comp.{succ u1, succ u4, succ u3} X α β x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3224 x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3226) u) F)))
 Case conversion may be inaccurate. Consider using '#align uniform_inducing.equicontinuous_iff UniformInducing.equicontinuous_iffₓ'. -/
 /- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:73:14: unsupported tactic `congrm #[[expr ∀ x, (_ : exprProp())]] -/
 /-- Given `u : α → β` a uniform inducing map, a family `𝓕 : ι → X → α` is equicontinuous iff the
@@ -542,7 +542,7 @@ theorem UniformInducing.equicontinuous_iff {F : ι → X → α} {u : α → β}
 lean 3 declaration is
   forall {ι : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} {γ : Type.{u4}} [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u3} β] [_inst_6 : UniformSpace.{u4} γ] {F : ι -> β -> α} {u : α -> γ}, (UniformInducing.{u2, u4} α γ _inst_4 _inst_6 u) -> (Iff (UniformEquicontinuous.{u1, u2, u3} ι α β _inst_4 _inst_5 F) (UniformEquicontinuous.{u1, u4, u3} ι γ β _inst_6 _inst_5 (Function.comp.{succ u1, max (succ u3) (succ u2), max (succ u3) (succ u4)} ι (β -> α) (β -> γ) (Function.comp.{succ u3, succ u2, succ u4} β α γ u) F)))
 but is expected to have type
-  forall {ι : Type.{u2}} {α : Type.{u4}} {β : Type.{u1}} {γ : Type.{u3}} [_inst_4 : UniformSpace.{u4} α] [_inst_5 : UniformSpace.{u1} β] [_inst_6 : UniformSpace.{u3} γ] {F : ι -> β -> α} {u : α -> γ}, (UniformInducing.{u4, u3} α γ _inst_4 _inst_6 u) -> (Iff (UniformEquicontinuous.{u2, u4, u1} ι α β _inst_4 _inst_5 F) (UniformEquicontinuous.{u2, u3, u1} ι γ β _inst_6 _inst_5 (Function.comp.{succ u2, max (succ u4) (succ u1), max (succ u1) (succ u3)} ι (β -> α) (β -> γ) ((fun (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3422 : α -> γ) (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3424 : β -> α) => Function.comp.{succ u1, succ u4, succ u3} β α γ x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3422 x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3424) u) F)))
+  forall {ι : Type.{u2}} {α : Type.{u4}} {β : Type.{u1}} {γ : Type.{u3}} [_inst_4 : UniformSpace.{u4} α] [_inst_5 : UniformSpace.{u1} β] [_inst_6 : UniformSpace.{u3} γ] {F : ι -> β -> α} {u : α -> γ}, (UniformInducing.{u4, u3} α γ _inst_4 _inst_6 u) -> (Iff (UniformEquicontinuous.{u2, u4, u1} ι α β _inst_4 _inst_5 F) (UniformEquicontinuous.{u2, u3, u1} ι γ β _inst_6 _inst_5 (Function.comp.{succ u2, max (succ u4) (succ u1), max (succ u1) (succ u3)} ι (β -> α) (β -> γ) ((fun (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3411 : α -> γ) (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3413 : β -> α) => Function.comp.{succ u1, succ u4, succ u3} β α γ x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3411 x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3413) u) F)))
 Case conversion may be inaccurate. Consider using '#align uniform_inducing.uniform_equicontinuous_iff UniformInducing.uniformEquicontinuous_iffₓ'. -/
 /-- Given `u : α → γ` a uniform inducing map, a family `𝓕 : ι → β → α` is uniformly equicontinuous
 iff the family `𝓕'`, obtained by precomposing each function of `𝓕` by `u`, is uniformly
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.uniform_space.equicontinuity
-! leanprover-community/mathlib commit f2ce6086713c78a7f880485f7917ea547a215982
+! leanprover-community/mathlib commit ee05e9ce1322178f0c12004eb93c00d2c8c00ed2
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -13,6 +13,9 @@ import Mathbin.Topology.UniformSpace.UniformConvergenceTopology
 /-!
 # Equicontinuity of a family of functions
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 Let `X` be a topological space and `α` a `uniform_space`. A family of functions `F : ι → X → α`
 is said to be *equicontinuous at a point `x₀ : X`* when, for any entourage `U` in `α`, there is a
 neighborhood `V` of `x₀` such that, for all `x ∈ V`, and *for all `i`*, `F i x` is `U`-close to
Diff
@@ -149,7 +149,7 @@ lean 3 declaration is
 but is expected to have type
   forall {ι : Type.{u3}} {X : Type.{u2}} {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u1} α] {F : ι -> X -> α} {x₀ : X}, Iff (EquicontinuousAt.{u3, u2, u1} ι X α _inst_1 _inst_4 F x₀) (forall (U : Set.{u1} (Prod.{u1, u1} α α)), (Membership.mem.{u1, u1} (Set.{u1} (Prod.{u1, u1} α α)) (Filter.{u1} (Prod.{u1, u1} α α)) (instMembershipSetFilter.{u1} (Prod.{u1, u1} α α)) U (uniformity.{u1} α _inst_4)) -> (Exists.{succ u2} (Set.{u2} X) (fun (V : Set.{u2} X) => And (Membership.mem.{u2, u2} (Set.{u2} X) (Filter.{u2} X) (instMembershipSetFilter.{u2} X) V (nhds.{u2} X _inst_1 x₀)) (forall (x : X), (Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) x V) -> (forall (y : X), (Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) y V) -> (forall (i : ι), Membership.mem.{u1, u1} (Prod.{u1, u1} α α) (Set.{u1} (Prod.{u1, u1} α α)) (Set.instMembershipSet.{u1} (Prod.{u1, u1} α α)) (Prod.mk.{u1, u1} α α (F i x) (F i y)) U))))))
 Case conversion may be inaccurate. Consider using '#align equicontinuous_at_iff_pair equicontinuousAt_iff_pairₓ'. -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:628:2: warning: expanding binder collection (x y «expr ∈ » V) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (x y «expr ∈ » V) -/
 /-- Reformulation of equicontinuity at `x₀` comparing two variables near `x₀` instead of comparing
 only one with `x₀`. -/
 theorem equicontinuousAt_iff_pair {F : ι → X → α} {x₀ : X} :
@@ -524,14 +524,14 @@ lean 3 declaration is
 but is expected to have type
   forall {ι : Type.{u2}} {X : Type.{u1}} {α : Type.{u4}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : UniformSpace.{u4} α] [_inst_5 : UniformSpace.{u3} β] {F : ι -> X -> α} {u : α -> β}, (UniformInducing.{u4, u3} α β _inst_4 _inst_5 u) -> (Iff (Equicontinuous.{u2, u1, u4} ι X α _inst_1 _inst_4 F) (Equicontinuous.{u2, u1, u3} ι X β _inst_1 _inst_5 (Function.comp.{succ u2, max (succ u4) (succ u1), max (succ u3) (succ u1)} ι (X -> α) (X -> β) ((fun (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3235 : α -> β) (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3237 : X -> α) => Function.comp.{succ u1, succ u4, succ u3} X α β x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3235 x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3237) u) F)))
 Case conversion may be inaccurate. Consider using '#align uniform_inducing.equicontinuous_iff UniformInducing.equicontinuous_iffₓ'. -/
-/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:76:14: unsupported tactic `congrm #[[expr ∀ x, (_ : exprProp())]] -/
+/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:73:14: unsupported tactic `congrm #[[expr ∀ x, (_ : exprProp())]] -/
 /-- Given `u : α → β` a uniform inducing map, a family `𝓕 : ι → X → α` is equicontinuous iff the
 family `𝓕'`, obtained by precomposing each function of `𝓕` by `u`, is equicontinuous. -/
 theorem UniformInducing.equicontinuous_iff {F : ι → X → α} {u : α → β} (hu : UniformInducing u) :
     Equicontinuous F ↔ Equicontinuous ((· ∘ ·) u ∘ F) :=
   by
   trace
-    "./././Mathport/Syntax/Translate/Tactic/Builtin.lean:76:14: unsupported tactic `congrm #[[expr ∀ x, (_ : exprProp())]]"
+    "./././Mathport/Syntax/Translate/Tactic/Builtin.lean:73:14: unsupported tactic `congrm #[[expr ∀ x, (_ : exprProp())]]"
   rw [hu.equicontinuous_at_iff]
 #align uniform_inducing.equicontinuous_iff UniformInducing.equicontinuous_iff
 
Diff
@@ -93,44 +93,62 @@ open uniformity Topology UniformConvergence
 variable {ι κ X Y Z α β γ 𝓕 : Type _} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z]
   [UniformSpace α] [UniformSpace β] [UniformSpace γ]
 
+#print EquicontinuousAt /-
 /-- A family `F : ι → X → α` of functions from a topological space to a uniform space is
 *equicontinuous at `x₀ : X`* if, for all entourage `U ∈ 𝓤 α`, there is a neighborhood `V` of `x₀`
 such that, for all `x ∈ V` and for all `i : ι`, `F i x` is `U`-close to `F i x₀`. -/
 def EquicontinuousAt (F : ι → X → α) (x₀ : X) : Prop :=
   ∀ U ∈ 𝓤 α, ∀ᶠ x in 𝓝 x₀, ∀ i, (F i x₀, F i x) ∈ U
 #align equicontinuous_at EquicontinuousAt
+-/
 
+#print Set.EquicontinuousAt /-
 /-- We say that a set `H : set (X → α)` of functions is equicontinuous at a point if the family
 `coe : ↥H → (X → α)` is equicontinuous at that point. -/
 protected abbrev Set.EquicontinuousAt (H : Set <| X → α) (x₀ : X) : Prop :=
   EquicontinuousAt (coe : H → X → α) x₀
 #align set.equicontinuous_at Set.EquicontinuousAt
+-/
 
+#print Equicontinuous /-
 /-- A family `F : ι → X → α` of functions from a topological space to a uniform space is
 *equicontinuous* on all of `X` if it is equicontinuous at each point of `X`. -/
 def Equicontinuous (F : ι → X → α) : Prop :=
   ∀ x₀, EquicontinuousAt F x₀
 #align equicontinuous Equicontinuous
+-/
 
+#print Set.Equicontinuous /-
 /-- We say that a set `H : set (X → α)` of functions is equicontinuous if the family
 `coe : ↥H → (X → α)` is equicontinuous. -/
 protected abbrev Set.Equicontinuous (H : Set <| X → α) : Prop :=
   Equicontinuous (coe : H → X → α)
 #align set.equicontinuous Set.Equicontinuous
+-/
 
+#print UniformEquicontinuous /-
 /-- A family `F : ι → β → α` of functions between uniform spaces is *uniformly equicontinuous* if,
 for all entourage `U ∈ 𝓤 α`, there is an entourage `V ∈ 𝓤 β` such that, whenever `x` and `y` are
 `V`-close, we have that, *for all `i : ι`*, `F i x` is `U`-close to `F i x₀`. -/
 def UniformEquicontinuous (F : ι → β → α) : Prop :=
   ∀ U ∈ 𝓤 α, ∀ᶠ xy : β × β in 𝓤 β, ∀ i, (F i xy.1, F i xy.2) ∈ U
 #align uniform_equicontinuous UniformEquicontinuous
+-/
 
+#print Set.UniformEquicontinuous /-
 /-- We say that a set `H : set (X → α)` of functions is uniformly equicontinuous if the family
 `coe : ↥H → (X → α)` is uniformly equicontinuous. -/
 protected abbrev Set.UniformEquicontinuous (H : Set <| β → α) : Prop :=
   UniformEquicontinuous (coe : H → β → α)
 #align set.uniform_equicontinuous Set.UniformEquicontinuous
+-/
 
+/- warning: equicontinuous_at_iff_pair -> equicontinuousAt_iff_pair is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} {X : Type.{u2}} {α : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u3} α] {F : ι -> X -> α} {x₀ : X}, Iff (EquicontinuousAt.{u1, u2, u3} ι X α _inst_1 _inst_4 F x₀) (forall (U : Set.{u3} (Prod.{u3, u3} α α)), (Membership.Mem.{u3, u3} (Set.{u3} (Prod.{u3, u3} α α)) (Filter.{u3} (Prod.{u3, u3} α α)) (Filter.hasMem.{u3} (Prod.{u3, u3} α α)) U (uniformity.{u3} α _inst_4)) -> (Exists.{succ u2} (Set.{u2} X) (fun (V : Set.{u2} X) => Exists.{0} (Membership.Mem.{u2, u2} (Set.{u2} X) (Filter.{u2} X) (Filter.hasMem.{u2} X) V (nhds.{u2} X _inst_1 x₀)) (fun (H : Membership.Mem.{u2, u2} (Set.{u2} X) (Filter.{u2} X) (Filter.hasMem.{u2} X) V (nhds.{u2} X _inst_1 x₀)) => forall (x : X), (Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) x V) -> (forall (y : X), (Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) y V) -> (forall (i : ι), Membership.Mem.{u3, u3} (Prod.{u3, u3} α α) (Set.{u3} (Prod.{u3, u3} α α)) (Set.hasMem.{u3} (Prod.{u3, u3} α α)) (Prod.mk.{u3, u3} α α (F i x) (F i y)) U))))))
+but is expected to have type
+  forall {ι : Type.{u3}} {X : Type.{u2}} {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u1} α] {F : ι -> X -> α} {x₀ : X}, Iff (EquicontinuousAt.{u3, u2, u1} ι X α _inst_1 _inst_4 F x₀) (forall (U : Set.{u1} (Prod.{u1, u1} α α)), (Membership.mem.{u1, u1} (Set.{u1} (Prod.{u1, u1} α α)) (Filter.{u1} (Prod.{u1, u1} α α)) (instMembershipSetFilter.{u1} (Prod.{u1, u1} α α)) U (uniformity.{u1} α _inst_4)) -> (Exists.{succ u2} (Set.{u2} X) (fun (V : Set.{u2} X) => And (Membership.mem.{u2, u2} (Set.{u2} X) (Filter.{u2} X) (instMembershipSetFilter.{u2} X) V (nhds.{u2} X _inst_1 x₀)) (forall (x : X), (Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) x V) -> (forall (y : X), (Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) y V) -> (forall (i : ι), Membership.mem.{u1, u1} (Prod.{u1, u1} α α) (Set.{u1} (Prod.{u1, u1} α α)) (Set.instMembershipSet.{u1} (Prod.{u1, u1} α α)) (Prod.mk.{u1, u1} α α (F i x) (F i y)) U))))))
+Case conversion may be inaccurate. Consider using '#align equicontinuous_at_iff_pair equicontinuousAt_iff_pairₓ'. -/
 /- ./././Mathport/Syntax/Translate/Basic.lean:628:2: warning: expanding binder collection (x y «expr ∈ » V) -/
 /-- Reformulation of equicontinuity at `x₀` comparing two variables near `x₀` instead of comparing
 only one with `x₀`. -/
@@ -146,12 +164,24 @@ theorem equicontinuousAt_iff_pair {F : ι → X → α} {x₀ : X} :
     filter_upwards [hV]using fun x hx i => hVU x₀ (mem_of_mem_nhds hV) x hx i
 #align equicontinuous_at_iff_pair equicontinuousAt_iff_pair
 
+/- warning: uniform_equicontinuous.equicontinuous -> UniformEquicontinuous.equicontinuous is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u3} β] {F : ι -> β -> α}, (UniformEquicontinuous.{u1, u2, u3} ι α β _inst_4 _inst_5 F) -> (Equicontinuous.{u1, u3, u2} ι β α (UniformSpace.toTopologicalSpace.{u3} β _inst_5) _inst_4 F)
+but is expected to have type
+  forall {ι : Type.{u3}} {α : Type.{u2}} {β : Type.{u1}} [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u1} β] {F : ι -> β -> α}, (UniformEquicontinuous.{u3, u2, u1} ι α β _inst_4 _inst_5 F) -> (Equicontinuous.{u3, u1, u2} ι β α (UniformSpace.toTopologicalSpace.{u1} β _inst_5) _inst_4 F)
+Case conversion may be inaccurate. Consider using '#align uniform_equicontinuous.equicontinuous UniformEquicontinuous.equicontinuousₓ'. -/
 /-- Uniform equicontinuity implies equicontinuity. -/
 theorem UniformEquicontinuous.equicontinuous {F : ι → β → α} (h : UniformEquicontinuous F) :
     Equicontinuous F := fun x₀ U hU =>
   mem_of_superset (ball_mem_nhds x₀ (h U hU)) fun x hx i => hx i
 #align uniform_equicontinuous.equicontinuous UniformEquicontinuous.equicontinuous
 
+/- warning: equicontinuous_at.continuous_at -> EquicontinuousAt.continuousAt is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} {X : Type.{u2}} {α : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u3} α] {F : ι -> X -> α} {x₀ : X}, (EquicontinuousAt.{u1, u2, u3} ι X α _inst_1 _inst_4 F x₀) -> (forall (i : ι), ContinuousAt.{u2, u3} X α _inst_1 (UniformSpace.toTopologicalSpace.{u3} α _inst_4) (F i) x₀)
+but is expected to have type
+  forall {ι : Type.{u3}} {X : Type.{u2}} {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u1} α] {F : ι -> X -> α} {x₀ : X}, (EquicontinuousAt.{u3, u2, u1} ι X α _inst_1 _inst_4 F x₀) -> (forall (i : ι), ContinuousAt.{u2, u1} X α _inst_1 (UniformSpace.toTopologicalSpace.{u1} α _inst_4) (F i) x₀)
+Case conversion may be inaccurate. Consider using '#align equicontinuous_at.continuous_at EquicontinuousAt.continuousAtₓ'. -/
 /-- Each function of a family equicontinuous at `x₀` is continuous at `x₀`. -/
 theorem EquicontinuousAt.continuousAt {F : ι → X → α} {x₀ : X} (h : EquicontinuousAt F x₀) (i : ι) :
     ContinuousAt (F i) x₀ := by
@@ -161,63 +191,135 @@ theorem EquicontinuousAt.continuousAt {F : ι → X → α} {x₀ : X} (h : Equi
   exact mem_map.mpr (mem_of_superset (h V hV₁) fun x hx => hV₂ (hx i))
 #align equicontinuous_at.continuous_at EquicontinuousAt.continuousAt
 
+/- warning: set.equicontinuous_at.continuous_at_of_mem -> Set.EquicontinuousAt.continuousAt_of_mem is a dubious translation:
+lean 3 declaration is
+  forall {X : Type.{u1}} {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : UniformSpace.{u2} α] {H : Set.{max u1 u2} (X -> α)} {x₀ : X}, (Set.EquicontinuousAt.{u1, u2} X α _inst_1 _inst_4 H x₀) -> (forall {f : X -> α}, (Membership.Mem.{max u1 u2, max u1 u2} (X -> α) (Set.{max u1 u2} (X -> α)) (Set.hasMem.{max u1 u2} (X -> α)) f H) -> (ContinuousAt.{u1, u2} X α _inst_1 (UniformSpace.toTopologicalSpace.{u2} α _inst_4) f x₀))
+but is expected to have type
+  forall {X : Type.{u2}} {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u1} α] {H : Set.{max u2 u1} (X -> α)} {x₀ : X}, (Set.EquicontinuousAt.{u2, u1} X α _inst_1 _inst_4 H x₀) -> (forall {f : X -> α}, (Membership.mem.{max u2 u1, max u2 u1} (X -> α) (Set.{max u2 u1} (X -> α)) (Set.instMembershipSet.{max u2 u1} (X -> α)) f H) -> (ContinuousAt.{u2, u1} X α _inst_1 (UniformSpace.toTopologicalSpace.{u1} α _inst_4) f x₀))
+Case conversion may be inaccurate. Consider using '#align set.equicontinuous_at.continuous_at_of_mem Set.EquicontinuousAt.continuousAt_of_memₓ'. -/
 protected theorem Set.EquicontinuousAt.continuousAt_of_mem {H : Set <| X → α} {x₀ : X}
     (h : H.EquicontinuousAt x₀) {f : X → α} (hf : f ∈ H) : ContinuousAt f x₀ :=
   h.ContinuousAt ⟨f, hf⟩
 #align set.equicontinuous_at.continuous_at_of_mem Set.EquicontinuousAt.continuousAt_of_mem
 
+/- warning: equicontinuous.continuous -> Equicontinuous.continuous is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} {X : Type.{u2}} {α : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u3} α] {F : ι -> X -> α}, (Equicontinuous.{u1, u2, u3} ι X α _inst_1 _inst_4 F) -> (forall (i : ι), Continuous.{u2, u3} X α _inst_1 (UniformSpace.toTopologicalSpace.{u3} α _inst_4) (F i))
+but is expected to have type
+  forall {ι : Type.{u3}} {X : Type.{u2}} {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u1} α] {F : ι -> X -> α}, (Equicontinuous.{u3, u2, u1} ι X α _inst_1 _inst_4 F) -> (forall (i : ι), Continuous.{u2, u1} X α _inst_1 (UniformSpace.toTopologicalSpace.{u1} α _inst_4) (F i))
+Case conversion may be inaccurate. Consider using '#align equicontinuous.continuous Equicontinuous.continuousₓ'. -/
 /-- Each function of an equicontinuous family is continuous. -/
 theorem Equicontinuous.continuous {F : ι → X → α} (h : Equicontinuous F) (i : ι) :
     Continuous (F i) :=
   continuous_iff_continuousAt.mpr fun x => (h x).ContinuousAt i
 #align equicontinuous.continuous Equicontinuous.continuous
 
+/- warning: set.equicontinuous.continuous_of_mem -> Set.Equicontinuous.continuous_of_mem is a dubious translation:
+lean 3 declaration is
+  forall {X : Type.{u1}} {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : UniformSpace.{u2} α] {H : Set.{max u1 u2} (X -> α)}, (Set.Equicontinuous.{u1, u2} X α _inst_1 _inst_4 H) -> (forall {f : X -> α}, (Membership.Mem.{max u1 u2, max u1 u2} (X -> α) (Set.{max u1 u2} (X -> α)) (Set.hasMem.{max u1 u2} (X -> α)) f H) -> (Continuous.{u1, u2} X α _inst_1 (UniformSpace.toTopologicalSpace.{u2} α _inst_4) f))
+but is expected to have type
+  forall {X : Type.{u2}} {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u1} α] {H : Set.{max u2 u1} (X -> α)}, (Set.Equicontinuous.{u2, u1} X α _inst_1 _inst_4 H) -> (forall {f : X -> α}, (Membership.mem.{max u2 u1, max u2 u1} (X -> α) (Set.{max u2 u1} (X -> α)) (Set.instMembershipSet.{max u2 u1} (X -> α)) f H) -> (Continuous.{u2, u1} X α _inst_1 (UniformSpace.toTopologicalSpace.{u1} α _inst_4) f))
+Case conversion may be inaccurate. Consider using '#align set.equicontinuous.continuous_of_mem Set.Equicontinuous.continuous_of_memₓ'. -/
 protected theorem Set.Equicontinuous.continuous_of_mem {H : Set <| X → α} (h : H.Equicontinuous)
     {f : X → α} (hf : f ∈ H) : Continuous f :=
   h.Continuous ⟨f, hf⟩
 #align set.equicontinuous.continuous_of_mem Set.Equicontinuous.continuous_of_mem
 
+/- warning: uniform_equicontinuous.uniform_continuous -> UniformEquicontinuous.uniformContinuous is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u3} β] {F : ι -> β -> α}, (UniformEquicontinuous.{u1, u2, u3} ι α β _inst_4 _inst_5 F) -> (forall (i : ι), UniformContinuous.{u3, u2} β α _inst_5 _inst_4 (F i))
+but is expected to have type
+  forall {ι : Type.{u3}} {α : Type.{u2}} {β : Type.{u1}} [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u1} β] {F : ι -> β -> α}, (UniformEquicontinuous.{u3, u2, u1} ι α β _inst_4 _inst_5 F) -> (forall (i : ι), UniformContinuous.{u1, u2} β α _inst_5 _inst_4 (F i))
+Case conversion may be inaccurate. Consider using '#align uniform_equicontinuous.uniform_continuous UniformEquicontinuous.uniformContinuousₓ'. -/
 /-- Each function of a uniformly equicontinuous family is uniformly continuous. -/
 theorem UniformEquicontinuous.uniformContinuous {F : ι → β → α} (h : UniformEquicontinuous F)
     (i : ι) : UniformContinuous (F i) := fun U hU =>
   mem_map.mpr (mem_of_superset (h U hU) fun xy hxy => hxy i)
 #align uniform_equicontinuous.uniform_continuous UniformEquicontinuous.uniformContinuous
 
+/- warning: set.uniform_equicontinuous.uniform_continuous_of_mem -> Set.UniformEquicontinuous.uniformContinuous_of_mem is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_4 : UniformSpace.{u1} α] [_inst_5 : UniformSpace.{u2} β] {H : Set.{max u2 u1} (β -> α)}, (Set.UniformEquicontinuous.{u1, u2} α β _inst_4 _inst_5 H) -> (forall {f : β -> α}, (Membership.Mem.{max u2 u1, max u2 u1} (β -> α) (Set.{max u2 u1} (β -> α)) (Set.hasMem.{max u2 u1} (β -> α)) f H) -> (UniformContinuous.{u2, u1} β α _inst_5 _inst_4 f))
+but is expected to have type
+  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u1} β] {H : Set.{max u2 u1} (β -> α)}, (Set.UniformEquicontinuous.{u2, u1} α β _inst_4 _inst_5 H) -> (forall {f : β -> α}, (Membership.mem.{max u2 u1, max u2 u1} (β -> α) (Set.{max u2 u1} (β -> α)) (Set.instMembershipSet.{max u2 u1} (β -> α)) f H) -> (UniformContinuous.{u1, u2} β α _inst_5 _inst_4 f))
+Case conversion may be inaccurate. Consider using '#align set.uniform_equicontinuous.uniform_continuous_of_mem Set.UniformEquicontinuous.uniformContinuous_of_memₓ'. -/
 protected theorem Set.UniformEquicontinuous.uniformContinuous_of_mem {H : Set <| β → α}
     (h : H.UniformEquicontinuous) {f : β → α} (hf : f ∈ H) : UniformContinuous f :=
   h.UniformContinuous ⟨f, hf⟩
 #align set.uniform_equicontinuous.uniform_continuous_of_mem Set.UniformEquicontinuous.uniformContinuous_of_mem
 
+/- warning: equicontinuous_at.comp -> EquicontinuousAt.comp is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} {κ : Type.{u2}} {X : Type.{u3}} {α : Type.{u4}} [_inst_1 : TopologicalSpace.{u3} X] [_inst_4 : UniformSpace.{u4} α] {F : ι -> X -> α} {x₀ : X}, (EquicontinuousAt.{u1, u3, u4} ι X α _inst_1 _inst_4 F x₀) -> (forall (u : κ -> ι), EquicontinuousAt.{u2, u3, u4} κ X α _inst_1 _inst_4 (Function.comp.{succ u2, succ u1, max (succ u3) (succ u4)} κ ι (X -> α) F u) x₀)
+but is expected to have type
+  forall {ι : Type.{u4}} {κ : Type.{u1}} {X : Type.{u3}} {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} X] [_inst_4 : UniformSpace.{u2} α] {F : ι -> X -> α} {x₀ : X}, (EquicontinuousAt.{u4, u3, u2} ι X α _inst_1 _inst_4 F x₀) -> (forall (u : κ -> ι), EquicontinuousAt.{u1, u3, u2} κ X α _inst_1 _inst_4 (Function.comp.{succ u1, succ u4, max (succ u2) (succ u3)} κ ι (X -> α) F u) x₀)
+Case conversion may be inaccurate. Consider using '#align equicontinuous_at.comp EquicontinuousAt.compₓ'. -/
 /-- Taking sub-families preserves equicontinuity at a point. -/
 theorem EquicontinuousAt.comp {F : ι → X → α} {x₀ : X} (h : EquicontinuousAt F x₀) (u : κ → ι) :
     EquicontinuousAt (F ∘ u) x₀ := fun U hU => (h U hU).mono fun x H k => H (u k)
 #align equicontinuous_at.comp EquicontinuousAt.comp
 
+/- warning: set.equicontinuous_at.mono -> Set.EquicontinuousAt.mono is a dubious translation:
+lean 3 declaration is
+  forall {X : Type.{u1}} {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : UniformSpace.{u2} α] {H : Set.{max u1 u2} (X -> α)} {H' : Set.{max u1 u2} (X -> α)} {x₀ : X}, (Set.EquicontinuousAt.{u1, u2} X α _inst_1 _inst_4 H x₀) -> (HasSubset.Subset.{max u1 u2} (Set.{max u1 u2} (X -> α)) (Set.hasSubset.{max u1 u2} (X -> α)) H' H) -> (Set.EquicontinuousAt.{u1, u2} X α _inst_1 _inst_4 H' x₀)
+but is expected to have type
+  forall {X : Type.{u2}} {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u1} α] {H : Set.{max u2 u1} (X -> α)} {H' : Set.{max u2 u1} (X -> α)} {x₀ : X}, (Set.EquicontinuousAt.{u2, u1} X α _inst_1 _inst_4 H x₀) -> (HasSubset.Subset.{max u2 u1} (Set.{max u2 u1} (X -> α)) (Set.instHasSubsetSet.{max u2 u1} (X -> α)) H' H) -> (Set.EquicontinuousAt.{u2, u1} X α _inst_1 _inst_4 H' x₀)
+Case conversion may be inaccurate. Consider using '#align set.equicontinuous_at.mono Set.EquicontinuousAt.monoₓ'. -/
 protected theorem Set.EquicontinuousAt.mono {H H' : Set <| X → α} {x₀ : X}
     (h : H.EquicontinuousAt x₀) (hH : H' ⊆ H) : H'.EquicontinuousAt x₀ :=
   h.comp (inclusion hH)
 #align set.equicontinuous_at.mono Set.EquicontinuousAt.mono
 
+/- warning: equicontinuous.comp -> Equicontinuous.comp is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} {κ : Type.{u2}} {X : Type.{u3}} {α : Type.{u4}} [_inst_1 : TopologicalSpace.{u3} X] [_inst_4 : UniformSpace.{u4} α] {F : ι -> X -> α}, (Equicontinuous.{u1, u3, u4} ι X α _inst_1 _inst_4 F) -> (forall (u : κ -> ι), Equicontinuous.{u2, u3, u4} κ X α _inst_1 _inst_4 (Function.comp.{succ u2, succ u1, max (succ u3) (succ u4)} κ ι (X -> α) F u))
+but is expected to have type
+  forall {ι : Type.{u4}} {κ : Type.{u1}} {X : Type.{u3}} {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} X] [_inst_4 : UniformSpace.{u2} α] {F : ι -> X -> α}, (Equicontinuous.{u4, u3, u2} ι X α _inst_1 _inst_4 F) -> (forall (u : κ -> ι), Equicontinuous.{u1, u3, u2} κ X α _inst_1 _inst_4 (Function.comp.{succ u1, succ u4, max (succ u2) (succ u3)} κ ι (X -> α) F u))
+Case conversion may be inaccurate. Consider using '#align equicontinuous.comp Equicontinuous.compₓ'. -/
 /-- Taking sub-families preserves equicontinuity. -/
 theorem Equicontinuous.comp {F : ι → X → α} (h : Equicontinuous F) (u : κ → ι) :
     Equicontinuous (F ∘ u) := fun x => (h x).comp u
 #align equicontinuous.comp Equicontinuous.comp
 
+/- warning: set.equicontinuous.mono -> Set.Equicontinuous.mono is a dubious translation:
+lean 3 declaration is
+  forall {X : Type.{u1}} {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : UniformSpace.{u2} α] {H : Set.{max u1 u2} (X -> α)} {H' : Set.{max u1 u2} (X -> α)}, (Set.Equicontinuous.{u1, u2} X α _inst_1 _inst_4 H) -> (HasSubset.Subset.{max u1 u2} (Set.{max u1 u2} (X -> α)) (Set.hasSubset.{max u1 u2} (X -> α)) H' H) -> (Set.Equicontinuous.{u1, u2} X α _inst_1 _inst_4 H')
+but is expected to have type
+  forall {X : Type.{u2}} {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u1} α] {H : Set.{max u2 u1} (X -> α)} {H' : Set.{max u2 u1} (X -> α)}, (Set.Equicontinuous.{u2, u1} X α _inst_1 _inst_4 H) -> (HasSubset.Subset.{max u2 u1} (Set.{max u2 u1} (X -> α)) (Set.instHasSubsetSet.{max u2 u1} (X -> α)) H' H) -> (Set.Equicontinuous.{u2, u1} X α _inst_1 _inst_4 H')
+Case conversion may be inaccurate. Consider using '#align set.equicontinuous.mono Set.Equicontinuous.monoₓ'. -/
 protected theorem Set.Equicontinuous.mono {H H' : Set <| X → α} (h : H.Equicontinuous)
     (hH : H' ⊆ H) : H'.Equicontinuous :=
   h.comp (inclusion hH)
 #align set.equicontinuous.mono Set.Equicontinuous.mono
 
+/- warning: uniform_equicontinuous.comp -> UniformEquicontinuous.comp is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} {κ : Type.{u2}} {α : Type.{u3}} {β : Type.{u4}} [_inst_4 : UniformSpace.{u3} α] [_inst_5 : UniformSpace.{u4} β] {F : ι -> β -> α}, (UniformEquicontinuous.{u1, u3, u4} ι α β _inst_4 _inst_5 F) -> (forall (u : κ -> ι), UniformEquicontinuous.{u2, u3, u4} κ α β _inst_4 _inst_5 (Function.comp.{succ u2, succ u1, max (succ u4) (succ u3)} κ ι (β -> α) F u))
+but is expected to have type
+  forall {ι : Type.{u4}} {κ : Type.{u1}} {α : Type.{u3}} {β : Type.{u2}} [_inst_4 : UniformSpace.{u3} α] [_inst_5 : UniformSpace.{u2} β] {F : ι -> β -> α}, (UniformEquicontinuous.{u4, u3, u2} ι α β _inst_4 _inst_5 F) -> (forall (u : κ -> ι), UniformEquicontinuous.{u1, u3, u2} κ α β _inst_4 _inst_5 (Function.comp.{succ u1, succ u4, max (succ u2) (succ u3)} κ ι (β -> α) F u))
+Case conversion may be inaccurate. Consider using '#align uniform_equicontinuous.comp UniformEquicontinuous.compₓ'. -/
 /-- Taking sub-families preserves uniform equicontinuity. -/
 theorem UniformEquicontinuous.comp {F : ι → β → α} (h : UniformEquicontinuous F) (u : κ → ι) :
     UniformEquicontinuous (F ∘ u) := fun U hU => (h U hU).mono fun x H k => H (u k)
 #align uniform_equicontinuous.comp UniformEquicontinuous.comp
 
+/- warning: set.uniform_equicontinuous.mono -> Set.UniformEquicontinuous.mono is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_4 : UniformSpace.{u1} α] [_inst_5 : UniformSpace.{u2} β] {H : Set.{max u2 u1} (β -> α)} {H' : Set.{max u2 u1} (β -> α)}, (Set.UniformEquicontinuous.{u1, u2} α β _inst_4 _inst_5 H) -> (HasSubset.Subset.{max u2 u1} (Set.{max u2 u1} (β -> α)) (Set.hasSubset.{max u2 u1} (β -> α)) H' H) -> (Set.UniformEquicontinuous.{u1, u2} α β _inst_4 _inst_5 H')
+but is expected to have type
+  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u1} β] {H : Set.{max u2 u1} (β -> α)} {H' : Set.{max u2 u1} (β -> α)}, (Set.UniformEquicontinuous.{u2, u1} α β _inst_4 _inst_5 H) -> (HasSubset.Subset.{max u2 u1} (Set.{max u2 u1} (β -> α)) (Set.instHasSubsetSet.{max u2 u1} (β -> α)) H' H) -> (Set.UniformEquicontinuous.{u2, u1} α β _inst_4 _inst_5 H')
+Case conversion may be inaccurate. Consider using '#align set.uniform_equicontinuous.mono Set.UniformEquicontinuous.monoₓ'. -/
 protected theorem Set.UniformEquicontinuous.mono {H H' : Set <| β → α} (h : H.UniformEquicontinuous)
     (hH : H' ⊆ H) : H'.UniformEquicontinuous :=
   h.comp (inclusion hH)
 #align set.uniform_equicontinuous.mono Set.UniformEquicontinuous.mono
 
+/- warning: equicontinuous_at_iff_range -> equicontinuousAt_iff_range is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} {X : Type.{u2}} {α : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u3} α] {F : ι -> X -> α} {x₀ : X}, Iff (EquicontinuousAt.{u1, u2, u3} ι X α _inst_1 _inst_4 F x₀) (EquicontinuousAt.{max u2 u3, u2, u3} (coeSort.{succ (max u2 u3), succ (succ (max u2 u3))} (Set.{max u2 u3} (X -> α)) Type.{max u2 u3} (Set.hasCoeToSort.{max u2 u3} (X -> α)) (Set.range.{max u2 u3, succ u1} (X -> α) ι F)) X α _inst_1 _inst_4 ((fun (a : Type.{max u2 u3}) (b : Sort.{max (succ u2) (succ u3)}) [self : HasLiftT.{succ (max u2 u3), max (succ u2) (succ u3)} a b] => self.0) (coeSort.{succ (max u2 u3), succ (succ (max u2 u3))} (Set.{max u2 u3} (X -> α)) Type.{max u2 u3} (Set.hasCoeToSort.{max u2 u3} (X -> α)) (Set.range.{max u2 u3, succ u1} (X -> α) ι F)) (X -> α) (HasLiftT.mk.{succ (max u2 u3), max (succ u2) (succ u3)} (coeSort.{succ (max u2 u3), succ (succ (max u2 u3))} (Set.{max u2 u3} (X -> α)) Type.{max u2 u3} (Set.hasCoeToSort.{max u2 u3} (X -> α)) (Set.range.{max u2 u3, succ u1} (X -> α) ι F)) (X -> α) (CoeTCₓ.coe.{succ (max u2 u3), max (succ u2) (succ u3)} (coeSort.{succ (max u2 u3), succ (succ (max u2 u3))} (Set.{max u2 u3} (X -> α)) Type.{max u2 u3} (Set.hasCoeToSort.{max u2 u3} (X -> α)) (Set.range.{max u2 u3, succ u1} (X -> α) ι F)) (X -> α) (coeBase.{succ (max u2 u3), max (succ u2) (succ u3)} (coeSort.{succ (max u2 u3), succ (succ (max u2 u3))} (Set.{max u2 u3} (X -> α)) Type.{max u2 u3} (Set.hasCoeToSort.{max u2 u3} (X -> α)) (Set.range.{max u2 u3, succ u1} (X -> α) ι F)) (X -> α) (coeSubtype.{max (succ u2) (succ u3)} (X -> α) (fun (x : X -> α) => Membership.Mem.{max u2 u3, max u2 u3} (X -> α) (Set.{max u2 u3} (X -> α)) (Set.hasMem.{max u2 u3} (X -> α)) x (Set.range.{max u2 u3, succ u1} (X -> α) ι F))))))) x₀)
+but is expected to have type
+  forall {ι : Type.{u3}} {X : Type.{u2}} {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u1} α] {F : ι -> X -> α} {x₀ : X}, Iff (EquicontinuousAt.{u3, u2, u1} ι X α _inst_1 _inst_4 F x₀) (EquicontinuousAt.{max u2 u1, u2, u1} (Subtype.{succ (max u2 u1)} (X -> α) (fun (x : X -> α) => Membership.mem.{max u2 u1, max u2 u1} (X -> α) (Set.{max u2 u1} (X -> α)) (Set.instMembershipSet.{max u2 u1} (X -> α)) x (Set.range.{max u2 u1, succ u3} (X -> α) ι F))) X α _inst_1 _inst_4 (Subtype.val.{succ (max u2 u1)} (X -> α) (fun (x : X -> α) => Membership.mem.{max u2 u1, max u2 u1} (X -> α) (Set.{max u2 u1} (X -> α)) (Set.instMembershipSet.{max u2 u1} (X -> α)) x (Set.range.{max u2 u1, succ u3} (X -> α) ι F))) x₀)
+Case conversion may be inaccurate. Consider using '#align equicontinuous_at_iff_range equicontinuousAt_iff_rangeₓ'. -/
 /-- A family `𝓕 : ι → X → α` is equicontinuous at `x₀` iff `range 𝓕` is equicontinuous at `x₀`,
 i.e the family `coe : range F → X → α` is equicontinuous at `x₀`. -/
 theorem equicontinuousAt_iff_range {F : ι → X → α} {x₀ : X} :
@@ -226,6 +328,12 @@ theorem equicontinuousAt_iff_range {F : ι → X → α} {x₀ : X} :
     h.comp (rangeFactorization F)⟩
 #align equicontinuous_at_iff_range equicontinuousAt_iff_range
 
+/- warning: equicontinuous_iff_range -> equicontinuous_iff_range is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} {X : Type.{u2}} {α : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u3} α] {F : ι -> X -> α}, Iff (Equicontinuous.{u1, u2, u3} ι X α _inst_1 _inst_4 F) (Equicontinuous.{max u2 u3, u2, u3} (coeSort.{succ (max u2 u3), succ (succ (max u2 u3))} (Set.{max u2 u3} (X -> α)) Type.{max u2 u3} (Set.hasCoeToSort.{max u2 u3} (X -> α)) (Set.range.{max u2 u3, succ u1} (X -> α) ι F)) X α _inst_1 _inst_4 ((fun (a : Type.{max u2 u3}) (b : Sort.{max (succ u2) (succ u3)}) [self : HasLiftT.{succ (max u2 u3), max (succ u2) (succ u3)} a b] => self.0) (coeSort.{succ (max u2 u3), succ (succ (max u2 u3))} (Set.{max u2 u3} (X -> α)) Type.{max u2 u3} (Set.hasCoeToSort.{max u2 u3} (X -> α)) (Set.range.{max u2 u3, succ u1} (X -> α) ι F)) (X -> α) (HasLiftT.mk.{succ (max u2 u3), max (succ u2) (succ u3)} (coeSort.{succ (max u2 u3), succ (succ (max u2 u3))} (Set.{max u2 u3} (X -> α)) Type.{max u2 u3} (Set.hasCoeToSort.{max u2 u3} (X -> α)) (Set.range.{max u2 u3, succ u1} (X -> α) ι F)) (X -> α) (CoeTCₓ.coe.{succ (max u2 u3), max (succ u2) (succ u3)} (coeSort.{succ (max u2 u3), succ (succ (max u2 u3))} (Set.{max u2 u3} (X -> α)) Type.{max u2 u3} (Set.hasCoeToSort.{max u2 u3} (X -> α)) (Set.range.{max u2 u3, succ u1} (X -> α) ι F)) (X -> α) (coeBase.{succ (max u2 u3), max (succ u2) (succ u3)} (coeSort.{succ (max u2 u3), succ (succ (max u2 u3))} (Set.{max u2 u3} (X -> α)) Type.{max u2 u3} (Set.hasCoeToSort.{max u2 u3} (X -> α)) (Set.range.{max u2 u3, succ u1} (X -> α) ι F)) (X -> α) (coeSubtype.{max (succ u2) (succ u3)} (X -> α) (fun (x : X -> α) => Membership.Mem.{max u2 u3, max u2 u3} (X -> α) (Set.{max u2 u3} (X -> α)) (Set.hasMem.{max u2 u3} (X -> α)) x (Set.range.{max u2 u3, succ u1} (X -> α) ι F))))))))
+but is expected to have type
+  forall {ι : Type.{u3}} {X : Type.{u2}} {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u1} α] {F : ι -> X -> α}, Iff (Equicontinuous.{u3, u2, u1} ι X α _inst_1 _inst_4 F) (Equicontinuous.{max u2 u1, u2, u1} (Subtype.{succ (max u2 u1)} (X -> α) (fun (x : X -> α) => Membership.mem.{max u2 u1, max u2 u1} (X -> α) (Set.{max u2 u1} (X -> α)) (Set.instMembershipSet.{max u2 u1} (X -> α)) x (Set.range.{max u2 u1, succ u3} (X -> α) ι F))) X α _inst_1 _inst_4 (Subtype.val.{succ (max u2 u1)} (X -> α) (fun (x : X -> α) => Membership.mem.{max u2 u1, max u2 u1} (X -> α) (Set.{max u2 u1} (X -> α)) (Set.instMembershipSet.{max u2 u1} (X -> α)) x (Set.range.{max u2 u1, succ u3} (X -> α) ι F))))
+Case conversion may be inaccurate. Consider using '#align equicontinuous_iff_range equicontinuous_iff_rangeₓ'. -/
 /-- A family `𝓕 : ι → X → α` is equicontinuous iff `range 𝓕` is equicontinuous,
 i.e the family `coe : range F → X → α` is equicontinuous. -/
 theorem equicontinuous_iff_range {F : ι → X → α} :
@@ -233,6 +341,12 @@ theorem equicontinuous_iff_range {F : ι → X → α} :
   forall_congr' fun x₀ => equicontinuousAt_iff_range
 #align equicontinuous_iff_range equicontinuous_iff_range
 
+/- warning: uniform_equicontinuous_at_iff_range -> uniformEquicontinuous_at_iff_range is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u3} β] {F : ι -> β -> α}, Iff (UniformEquicontinuous.{u1, u2, u3} ι α β _inst_4 _inst_5 F) (UniformEquicontinuous.{max u3 u2, u2, u3} (coeSort.{succ (max u3 u2), succ (succ (max u3 u2))} (Set.{max u3 u2} (β -> α)) Type.{max u3 u2} (Set.hasCoeToSort.{max u3 u2} (β -> α)) (Set.range.{max u3 u2, succ u1} (β -> α) ι F)) α β _inst_4 _inst_5 ((fun (a : Type.{max u3 u2}) (b : Sort.{max (succ u3) (succ u2)}) [self : HasLiftT.{succ (max u3 u2), max (succ u3) (succ u2)} a b] => self.0) (coeSort.{succ (max u3 u2), succ (succ (max u3 u2))} (Set.{max u3 u2} (β -> α)) Type.{max u3 u2} (Set.hasCoeToSort.{max u3 u2} (β -> α)) (Set.range.{max u3 u2, succ u1} (β -> α) ι F)) (β -> α) (HasLiftT.mk.{succ (max u3 u2), max (succ u3) (succ u2)} (coeSort.{succ (max u3 u2), succ (succ (max u3 u2))} (Set.{max u3 u2} (β -> α)) Type.{max u3 u2} (Set.hasCoeToSort.{max u3 u2} (β -> α)) (Set.range.{max u3 u2, succ u1} (β -> α) ι F)) (β -> α) (CoeTCₓ.coe.{succ (max u3 u2), max (succ u3) (succ u2)} (coeSort.{succ (max u3 u2), succ (succ (max u3 u2))} (Set.{max u3 u2} (β -> α)) Type.{max u3 u2} (Set.hasCoeToSort.{max u3 u2} (β -> α)) (Set.range.{max u3 u2, succ u1} (β -> α) ι F)) (β -> α) (coeBase.{succ (max u3 u2), max (succ u3) (succ u2)} (coeSort.{succ (max u3 u2), succ (succ (max u3 u2))} (Set.{max u3 u2} (β -> α)) Type.{max u3 u2} (Set.hasCoeToSort.{max u3 u2} (β -> α)) (Set.range.{max u3 u2, succ u1} (β -> α) ι F)) (β -> α) (coeSubtype.{max (succ u3) (succ u2)} (β -> α) (fun (x : β -> α) => Membership.Mem.{max u3 u2, max u3 u2} (β -> α) (Set.{max u3 u2} (β -> α)) (Set.hasMem.{max u3 u2} (β -> α)) x (Set.range.{max u3 u2, succ u1} (β -> α) ι F))))))))
+but is expected to have type
+  forall {ι : Type.{u3}} {α : Type.{u2}} {β : Type.{u1}} [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u1} β] {F : ι -> β -> α}, Iff (UniformEquicontinuous.{u3, u2, u1} ι α β _inst_4 _inst_5 F) (UniformEquicontinuous.{max u2 u1, u2, u1} (Subtype.{succ (max u2 u1)} (β -> α) (fun (x : β -> α) => Membership.mem.{max u2 u1, max u2 u1} (β -> α) (Set.{max u2 u1} (β -> α)) (Set.instMembershipSet.{max u2 u1} (β -> α)) x (Set.range.{max u2 u1, succ u3} (β -> α) ι F))) α β _inst_4 _inst_5 (Subtype.val.{succ (max u2 u1)} (β -> α) (fun (x : β -> α) => Membership.mem.{max u2 u1, max u2 u1} (β -> α) (Set.{max u2 u1} (β -> α)) (Set.instMembershipSet.{max u2 u1} (β -> α)) x (Set.range.{max u2 u1, succ u3} (β -> α) ι F))))
+Case conversion may be inaccurate. Consider using '#align uniform_equicontinuous_at_iff_range uniformEquicontinuous_at_iff_rangeₓ'. -/
 /-- A family `𝓕 : ι → β → α` is uniformly equicontinuous iff `range 𝓕` is uniformly equicontinuous,
 i.e the family `coe : range F → β → α` is uniformly equicontinuous. -/
 theorem uniformEquicontinuous_at_iff_range {F : ι → β → α} :
@@ -245,6 +359,12 @@ section
 
 open UniformFun
 
+/- warning: equicontinuous_at_iff_continuous_at -> equicontinuousAt_iff_continuousAt is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} {X : Type.{u2}} {α : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u3} α] {F : ι -> X -> α} {x₀ : X}, Iff (EquicontinuousAt.{u1, u2, u3} ι X α _inst_1 _inst_4 F x₀) (ContinuousAt.{u2, max u1 u3} X (UniformFun.{u1, u3} ι α) _inst_1 (UniformFun.topologicalSpace.{u1, u3} ι α _inst_4) (Function.comp.{succ u2, max (succ u1) (succ u3), max (succ u1) (succ u3)} X (ι -> α) (UniformFun.{u1, u3} ι α) (coeFn.{max 1 (succ u1) (succ u3), max (succ u1) (succ u3)} (Equiv.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (ι -> α) (UniformFun.{u1, u3} ι α)) (fun (_x : Equiv.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (ι -> α) (UniformFun.{u1, u3} ι α)) => (ι -> α) -> (UniformFun.{u1, u3} ι α)) (Equiv.hasCoeToFun.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (ι -> α) (UniformFun.{u1, u3} ι α)) (UniformFun.ofFun.{u1, u3} ι α)) (Function.swap.{succ u1, succ u2, succ u3} ι X (fun (ᾰ : ι) (ᾰ : X) => α) F)) x₀)
+but is expected to have type
+  forall {ι : Type.{u3}} {X : Type.{u2}} {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u1} α] {F : ι -> X -> α} {x₀ : X}, Iff (EquicontinuousAt.{u3, u2, u1} ι X α _inst_1 _inst_4 F x₀) (ContinuousAt.{u2, max u3 u1} X (UniformFun.{u3, u1} ι α) _inst_1 (UniformFun.topologicalSpace.{u3, u1} ι α _inst_4) (Function.comp.{succ u2, max (succ u1) (succ u3), max (succ u3) (succ u1)} X (ι -> α) (UniformFun.{u3, u1} ι α) (FunLike.coe.{max (succ u1) (succ u3), max (succ u1) (succ u3), max (succ u1) (succ u3)} (Equiv.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (ι -> α) (UniformFun.{u3, u1} ι α)) (ι -> α) (fun (_x : ι -> α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : ι -> α) => UniformFun.{u3, u1} ι α) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (ι -> α) (UniformFun.{u3, u1} ι α)) (UniformFun.ofFun.{u3, u1} ι α)) (Function.swap.{succ u3, succ u2, succ u1} ι X (fun (ᾰ : ι) (ᾰ : X) => α) F)) x₀)
+Case conversion may be inaccurate. Consider using '#align equicontinuous_at_iff_continuous_at equicontinuousAt_iff_continuousAtₓ'. -/
 /-- A family `𝓕 : ι → X → α` is equicontinuous at `x₀` iff the function `swap 𝓕 : X → ι → α` is
 continuous at `x₀` *when `ι → α` is equipped with the topology of uniform convergence*. This is
 very useful for developping the equicontinuity API, but it should not be used directly for other
@@ -254,6 +374,12 @@ theorem equicontinuousAt_iff_continuousAt {F : ι → X → α} {x₀ : X} :
   rw [ContinuousAt, (UniformFun.hasBasis_nhds ι α _).tendsto_right_iff] <;> rfl
 #align equicontinuous_at_iff_continuous_at equicontinuousAt_iff_continuousAt
 
+/- warning: equicontinuous_iff_continuous -> equicontinuous_iff_continuous is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} {X : Type.{u2}} {α : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u3} α] {F : ι -> X -> α}, Iff (Equicontinuous.{u1, u2, u3} ι X α _inst_1 _inst_4 F) (Continuous.{u2, max u1 u3} X (UniformFun.{u1, u3} ι α) _inst_1 (UniformFun.topologicalSpace.{u1, u3} ι α _inst_4) (Function.comp.{succ u2, max (succ u1) (succ u3), max (succ u1) (succ u3)} X (ι -> α) (UniformFun.{u1, u3} ι α) (coeFn.{max 1 (succ u1) (succ u3), max (succ u1) (succ u3)} (Equiv.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (ι -> α) (UniformFun.{u1, u3} ι α)) (fun (_x : Equiv.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (ι -> α) (UniformFun.{u1, u3} ι α)) => (ι -> α) -> (UniformFun.{u1, u3} ι α)) (Equiv.hasCoeToFun.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (ι -> α) (UniformFun.{u1, u3} ι α)) (UniformFun.ofFun.{u1, u3} ι α)) (Function.swap.{succ u1, succ u2, succ u3} ι X (fun (ᾰ : ι) (ᾰ : X) => α) F)))
+but is expected to have type
+  forall {ι : Type.{u3}} {X : Type.{u2}} {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u1} α] {F : ι -> X -> α}, Iff (Equicontinuous.{u3, u2, u1} ι X α _inst_1 _inst_4 F) (Continuous.{u2, max u3 u1} X (UniformFun.{u3, u1} ι α) _inst_1 (UniformFun.topologicalSpace.{u3, u1} ι α _inst_4) (Function.comp.{succ u2, max (succ u1) (succ u3), max (succ u3) (succ u1)} X (ι -> α) (UniformFun.{u3, u1} ι α) (FunLike.coe.{max (succ u1) (succ u3), max (succ u1) (succ u3), max (succ u1) (succ u3)} (Equiv.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (ι -> α) (UniformFun.{u3, u1} ι α)) (ι -> α) (fun (_x : ι -> α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : ι -> α) => UniformFun.{u3, u1} ι α) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (ι -> α) (UniformFun.{u3, u1} ι α)) (UniformFun.ofFun.{u3, u1} ι α)) (Function.swap.{succ u3, succ u2, succ u1} ι X (fun (ᾰ : ι) (ᾰ : X) => α) F)))
+Case conversion may be inaccurate. Consider using '#align equicontinuous_iff_continuous equicontinuous_iff_continuousₓ'. -/
 /-- A family `𝓕 : ι → X → α` is equicontinuous iff the function `swap 𝓕 : X → ι → α` is
 continuous *when `ι → α` is equipped with the topology of uniform convergence*. This is
 very useful for developping the equicontinuity API, but it should not be used directly for other
@@ -263,6 +389,12 @@ theorem equicontinuous_iff_continuous {F : ι → X → α} :
   simp_rw [Equicontinuous, continuous_iff_continuousAt, equicontinuousAt_iff_continuousAt]
 #align equicontinuous_iff_continuous equicontinuous_iff_continuous
 
+/- warning: uniform_equicontinuous_iff_uniform_continuous -> uniformEquicontinuous_iff_uniformContinuous is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u3} β] {F : ι -> β -> α}, Iff (UniformEquicontinuous.{u1, u2, u3} ι α β _inst_4 _inst_5 F) (UniformContinuous.{u3, max u1 u2} β (UniformFun.{u1, u2} ι α) _inst_5 (UniformFun.uniformSpace.{u1, u2} ι α _inst_4) (Function.comp.{succ u3, max (succ u1) (succ u2), max (succ u1) (succ u2)} β (ι -> α) (UniformFun.{u1, u2} ι α) (coeFn.{max 1 (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (ι -> α) (UniformFun.{u1, u2} ι α)) (fun (_x : Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (ι -> α) (UniformFun.{u1, u2} ι α)) => (ι -> α) -> (UniformFun.{u1, u2} ι α)) (Equiv.hasCoeToFun.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (ι -> α) (UniformFun.{u1, u2} ι α)) (UniformFun.ofFun.{u1, u2} ι α)) (Function.swap.{succ u1, succ u3, succ u2} ι β (fun (ᾰ : ι) (ᾰ : β) => α) F)))
+but is expected to have type
+  forall {ι : Type.{u3}} {α : Type.{u2}} {β : Type.{u1}} [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u1} β] {F : ι -> β -> α}, Iff (UniformEquicontinuous.{u3, u2, u1} ι α β _inst_4 _inst_5 F) (UniformContinuous.{u1, max u3 u2} β (UniformFun.{u3, u2} ι α) _inst_5 (UniformFun.uniformSpace.{u3, u2} ι α _inst_4) (Function.comp.{succ u1, max (succ u2) (succ u3), max (succ u3) (succ u2)} β (ι -> α) (UniformFun.{u3, u2} ι α) (FunLike.coe.{max (succ u2) (succ u3), max (succ u2) (succ u3), max (succ u2) (succ u3)} (Equiv.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (ι -> α) (UniformFun.{u3, u2} ι α)) (ι -> α) (fun (_x : ι -> α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : ι -> α) => UniformFun.{u3, u2} ι α) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (ι -> α) (UniformFun.{u3, u2} ι α)) (UniformFun.ofFun.{u3, u2} ι α)) (Function.swap.{succ u3, succ u1, succ u2} ι β (fun (ᾰ : ι) (ᾰ : β) => α) F)))
+Case conversion may be inaccurate. Consider using '#align uniform_equicontinuous_iff_uniform_continuous uniformEquicontinuous_iff_uniformContinuousₓ'. -/
 /-- A family `𝓕 : ι → β → α` is uniformly equicontinuous iff the function `swap 𝓕 : β → ι → α` is
 uniformly continuous *when `ι → α` is equipped with the uniform structure of uniform convergence*.
 This is very useful for developping the equicontinuity API, but it should not be used directly
@@ -272,6 +404,12 @@ theorem uniformEquicontinuous_iff_uniformContinuous {F : ι → β → α} :
   rw [UniformContinuous, (UniformFun.hasBasis_uniformity ι α).tendsto_right_iff] <;> rfl
 #align uniform_equicontinuous_iff_uniform_continuous uniformEquicontinuous_iff_uniformContinuous
 
+/- warning: filter.has_basis.equicontinuous_at_iff_left -> Filter.HasBasis.equicontinuousAt_iff_left is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} {X : Type.{u2}} {α : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u3} α] {κ : Type.{u4}} {p : κ -> Prop} {s : κ -> (Set.{u2} X)} {F : ι -> X -> α} {x₀ : X}, (Filter.HasBasis.{u2, succ u4} X κ (nhds.{u2} X _inst_1 x₀) p s) -> (Iff (EquicontinuousAt.{u1, u2, u3} ι X α _inst_1 _inst_4 F x₀) (forall (U : Set.{u3} (Prod.{u3, u3} α α)), (Membership.Mem.{u3, u3} (Set.{u3} (Prod.{u3, u3} α α)) (Filter.{u3} (Prod.{u3, u3} α α)) (Filter.hasMem.{u3} (Prod.{u3, u3} α α)) U (uniformity.{u3} α _inst_4)) -> (Exists.{succ u4} κ (fun (k : κ) => Exists.{0} (p k) (fun (_x : p k) => forall (x : X), (Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) x (s k)) -> (forall (i : ι), Membership.Mem.{u3, u3} (Prod.{u3, u3} α α) (Set.{u3} (Prod.{u3, u3} α α)) (Set.hasMem.{u3} (Prod.{u3, u3} α α)) (Prod.mk.{u3, u3} α α (F i x₀) (F i x)) U))))))
+but is expected to have type
+  forall {ι : Type.{u2}} {X : Type.{u3}} {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} X] [_inst_4 : UniformSpace.{u1} α] {κ : Type.{u4}} {p : κ -> Prop} {s : κ -> (Set.{u3} X)} {F : ι -> X -> α} {x₀ : X}, (Filter.HasBasis.{u3, succ u4} X κ (nhds.{u3} X _inst_1 x₀) p s) -> (Iff (EquicontinuousAt.{u2, u3, u1} ι X α _inst_1 _inst_4 F x₀) (forall (U : Set.{u1} (Prod.{u1, u1} α α)), (Membership.mem.{u1, u1} (Set.{u1} (Prod.{u1, u1} α α)) (Filter.{u1} (Prod.{u1, u1} α α)) (instMembershipSetFilter.{u1} (Prod.{u1, u1} α α)) U (uniformity.{u1} α _inst_4)) -> (Exists.{succ u4} κ (fun (k : κ) => Exists.{0} (p k) (fun (_x : p k) => forall (x : X), (Membership.mem.{u3, u3} X (Set.{u3} X) (Set.instMembershipSet.{u3} X) x (s k)) -> (forall (i : ι), Membership.mem.{u1, u1} (Prod.{u1, u1} α α) (Set.{u1} (Prod.{u1, u1} α α)) (Set.instMembershipSet.{u1} (Prod.{u1, u1} α α)) (Prod.mk.{u1, u1} α α (F i x₀) (F i x)) U))))))
+Case conversion may be inaccurate. Consider using '#align filter.has_basis.equicontinuous_at_iff_left Filter.HasBasis.equicontinuousAt_iff_leftₓ'. -/
 theorem Filter.HasBasis.equicontinuousAt_iff_left {κ : Type _} {p : κ → Prop} {s : κ → Set X}
     {F : ι → X → α} {x₀ : X} (hX : (𝓝 x₀).HasBasis p s) :
     EquicontinuousAt F x₀ ↔ ∀ U ∈ 𝓤 α, ∃ (k : _)(_ : p k), ∀ x ∈ s k, ∀ i, (F i x₀, F i x) ∈ U :=
@@ -281,6 +419,12 @@ theorem Filter.HasBasis.equicontinuousAt_iff_left {κ : Type _} {p : κ → Prop
   rfl
 #align filter.has_basis.equicontinuous_at_iff_left Filter.HasBasis.equicontinuousAt_iff_left
 
+/- warning: filter.has_basis.equicontinuous_at_iff_right -> Filter.HasBasis.equicontinuousAt_iff_right is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} {X : Type.{u2}} {α : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u3} α] {κ : Type.{u4}} {p : κ -> Prop} {s : κ -> (Set.{u3} (Prod.{u3, u3} α α))} {F : ι -> X -> α} {x₀ : X}, (Filter.HasBasis.{u3, succ u4} (Prod.{u3, u3} α α) κ (uniformity.{u3} α _inst_4) p s) -> (Iff (EquicontinuousAt.{u1, u2, u3} ι X α _inst_1 _inst_4 F x₀) (forall (k : κ), (p k) -> (Filter.Eventually.{u2} X (fun (x : X) => forall (i : ι), Membership.Mem.{u3, u3} (Prod.{u3, u3} α α) (Set.{u3} (Prod.{u3, u3} α α)) (Set.hasMem.{u3} (Prod.{u3, u3} α α)) (Prod.mk.{u3, u3} α α (F i x₀) (F i x)) (s k)) (nhds.{u2} X _inst_1 x₀))))
+but is expected to have type
+  forall {ι : Type.{u2}} {X : Type.{u1}} {α : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : UniformSpace.{u3} α] {κ : Type.{u4}} {p : κ -> Prop} {s : κ -> (Set.{u3} (Prod.{u3, u3} α α))} {F : ι -> X -> α} {x₀ : X}, (Filter.HasBasis.{u3, succ u4} (Prod.{u3, u3} α α) κ (uniformity.{u3} α _inst_4) p s) -> (Iff (EquicontinuousAt.{u2, u1, u3} ι X α _inst_1 _inst_4 F x₀) (forall (k : κ), (p k) -> (Filter.Eventually.{u1} X (fun (x : X) => forall (i : ι), Membership.mem.{u3, u3} (Prod.{u3, u3} α α) (Set.{u3} (Prod.{u3, u3} α α)) (Set.instMembershipSet.{u3} (Prod.{u3, u3} α α)) (Prod.mk.{u3, u3} α α (F i x₀) (F i x)) (s k)) (nhds.{u1} X _inst_1 x₀))))
+Case conversion may be inaccurate. Consider using '#align filter.has_basis.equicontinuous_at_iff_right Filter.HasBasis.equicontinuousAt_iff_rightₓ'. -/
 theorem Filter.HasBasis.equicontinuousAt_iff_right {κ : Type _} {p : κ → Prop} {s : κ → Set (α × α)}
     {F : ι → X → α} {x₀ : X} (hα : (𝓤 α).HasBasis p s) :
     EquicontinuousAt F x₀ ↔ ∀ k, p k → ∀ᶠ x in 𝓝 x₀, ∀ i, (F i x₀, F i x) ∈ s k :=
@@ -290,6 +434,12 @@ theorem Filter.HasBasis.equicontinuousAt_iff_right {κ : Type _} {p : κ → Pro
   rfl
 #align filter.has_basis.equicontinuous_at_iff_right Filter.HasBasis.equicontinuousAt_iff_right
 
+/- warning: filter.has_basis.equicontinuous_at_iff -> Filter.HasBasis.equicontinuousAt_iff is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} {X : Type.{u2}} {α : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u3} α] {κ₁ : Type.{u4}} {κ₂ : Type.{u5}} {p₁ : κ₁ -> Prop} {s₁ : κ₁ -> (Set.{u2} X)} {p₂ : κ₂ -> Prop} {s₂ : κ₂ -> (Set.{u3} (Prod.{u3, u3} α α))} {F : ι -> X -> α} {x₀ : X}, (Filter.HasBasis.{u2, succ u4} X κ₁ (nhds.{u2} X _inst_1 x₀) p₁ s₁) -> (Filter.HasBasis.{u3, succ u5} (Prod.{u3, u3} α α) κ₂ (uniformity.{u3} α _inst_4) p₂ s₂) -> (Iff (EquicontinuousAt.{u1, u2, u3} ι X α _inst_1 _inst_4 F x₀) (forall (k₂ : κ₂), (p₂ k₂) -> (Exists.{succ u4} κ₁ (fun (k₁ : κ₁) => Exists.{0} (p₁ k₁) (fun (_x : p₁ k₁) => forall (x : X), (Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) x (s₁ k₁)) -> (forall (i : ι), Membership.Mem.{u3, u3} (Prod.{u3, u3} α α) (Set.{u3} (Prod.{u3, u3} α α)) (Set.hasMem.{u3} (Prod.{u3, u3} α α)) (Prod.mk.{u3, u3} α α (F i x₀) (F i x)) (s₂ k₂)))))))
+but is expected to have type
+  forall {ι : Type.{u1}} {X : Type.{u3}} {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} X] [_inst_4 : UniformSpace.{u2} α] {κ₁ : Type.{u5}} {κ₂ : Type.{u4}} {p₁ : κ₁ -> Prop} {s₁ : κ₁ -> (Set.{u3} X)} {p₂ : κ₂ -> Prop} {s₂ : κ₂ -> (Set.{u2} (Prod.{u2, u2} α α))} {F : ι -> X -> α} {x₀ : X}, (Filter.HasBasis.{u3, succ u5} X κ₁ (nhds.{u3} X _inst_1 x₀) p₁ s₁) -> (Filter.HasBasis.{u2, succ u4} (Prod.{u2, u2} α α) κ₂ (uniformity.{u2} α _inst_4) p₂ s₂) -> (Iff (EquicontinuousAt.{u1, u3, u2} ι X α _inst_1 _inst_4 F x₀) (forall (k₂ : κ₂), (p₂ k₂) -> (Exists.{succ u5} κ₁ (fun (k₁ : κ₁) => Exists.{0} (p₁ k₁) (fun (_x : p₁ k₁) => forall (x : X), (Membership.mem.{u3, u3} X (Set.{u3} X) (Set.instMembershipSet.{u3} X) x (s₁ k₁)) -> (forall (i : ι), Membership.mem.{u2, u2} (Prod.{u2, u2} α α) (Set.{u2} (Prod.{u2, u2} α α)) (Set.instMembershipSet.{u2} (Prod.{u2, u2} α α)) (Prod.mk.{u2, u2} α α (F i x₀) (F i x)) (s₂ k₂)))))))
+Case conversion may be inaccurate. Consider using '#align filter.has_basis.equicontinuous_at_iff Filter.HasBasis.equicontinuousAt_iffₓ'. -/
 theorem Filter.HasBasis.equicontinuousAt_iff {κ₁ κ₂ : Type _} {p₁ : κ₁ → Prop} {s₁ : κ₁ → Set X}
     {p₂ : κ₂ → Prop} {s₂ : κ₂ → Set (α × α)} {F : ι → X → α} {x₀ : X} (hX : (𝓝 x₀).HasBasis p₁ s₁)
     (hα : (𝓤 α).HasBasis p₂ s₂) :
@@ -301,6 +451,12 @@ theorem Filter.HasBasis.equicontinuousAt_iff {κ₁ κ₂ : Type _} {p₁ : κ
   rfl
 #align filter.has_basis.equicontinuous_at_iff Filter.HasBasis.equicontinuousAt_iff
 
+/- warning: filter.has_basis.uniform_equicontinuous_iff_left -> Filter.HasBasis.uniformEquicontinuous_iff_left is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u3} β] {κ : Type.{u4}} {p : κ -> Prop} {s : κ -> (Set.{u3} (Prod.{u3, u3} β β))} {F : ι -> β -> α}, (Filter.HasBasis.{u3, succ u4} (Prod.{u3, u3} β β) κ (uniformity.{u3} β _inst_5) p s) -> (Iff (UniformEquicontinuous.{u1, u2, u3} ι α β _inst_4 _inst_5 F) (forall (U : Set.{u2} (Prod.{u2, u2} α α)), (Membership.Mem.{u2, u2} (Set.{u2} (Prod.{u2, u2} α α)) (Filter.{u2} (Prod.{u2, u2} α α)) (Filter.hasMem.{u2} (Prod.{u2, u2} α α)) U (uniformity.{u2} α _inst_4)) -> (Exists.{succ u4} κ (fun (k : κ) => Exists.{0} (p k) (fun (_x : p k) => forall (x : β) (y : β), (Membership.Mem.{u3, u3} (Prod.{u3, u3} β β) (Set.{u3} (Prod.{u3, u3} β β)) (Set.hasMem.{u3} (Prod.{u3, u3} β β)) (Prod.mk.{u3, u3} β β x y) (s k)) -> (forall (i : ι), Membership.Mem.{u2, u2} (Prod.{u2, u2} α α) (Set.{u2} (Prod.{u2, u2} α α)) (Set.hasMem.{u2} (Prod.{u2, u2} α α)) (Prod.mk.{u2, u2} α α (F i x) (F i y)) U))))))
+but is expected to have type
+  forall {ι : Type.{u2}} {α : Type.{u1}} {β : Type.{u3}} [_inst_4 : UniformSpace.{u1} α] [_inst_5 : UniformSpace.{u3} β] {κ : Type.{u4}} {p : κ -> Prop} {s : κ -> (Set.{u3} (Prod.{u3, u3} β β))} {F : ι -> β -> α}, (Filter.HasBasis.{u3, succ u4} (Prod.{u3, u3} β β) κ (uniformity.{u3} β _inst_5) p s) -> (Iff (UniformEquicontinuous.{u2, u1, u3} ι α β _inst_4 _inst_5 F) (forall (U : Set.{u1} (Prod.{u1, u1} α α)), (Membership.mem.{u1, u1} (Set.{u1} (Prod.{u1, u1} α α)) (Filter.{u1} (Prod.{u1, u1} α α)) (instMembershipSetFilter.{u1} (Prod.{u1, u1} α α)) U (uniformity.{u1} α _inst_4)) -> (Exists.{succ u4} κ (fun (k : κ) => Exists.{0} (p k) (fun (_x : p k) => forall (x : β) (y : β), (Membership.mem.{u3, u3} (Prod.{u3, u3} β β) (Set.{u3} (Prod.{u3, u3} β β)) (Set.instMembershipSet.{u3} (Prod.{u3, u3} β β)) (Prod.mk.{u3, u3} β β x y) (s k)) -> (forall (i : ι), Membership.mem.{u1, u1} (Prod.{u1, u1} α α) (Set.{u1} (Prod.{u1, u1} α α)) (Set.instMembershipSet.{u1} (Prod.{u1, u1} α α)) (Prod.mk.{u1, u1} α α (F i x) (F i y)) U))))))
+Case conversion may be inaccurate. Consider using '#align filter.has_basis.uniform_equicontinuous_iff_left Filter.HasBasis.uniformEquicontinuous_iff_leftₓ'. -/
 theorem Filter.HasBasis.uniformEquicontinuous_iff_left {κ : Type _} {p : κ → Prop}
     {s : κ → Set (β × β)} {F : ι → β → α} (hβ : (𝓤 β).HasBasis p s) :
     UniformEquicontinuous F ↔
@@ -312,6 +468,12 @@ theorem Filter.HasBasis.uniformEquicontinuous_iff_left {κ : Type _} {p : κ →
   rfl
 #align filter.has_basis.uniform_equicontinuous_iff_left Filter.HasBasis.uniformEquicontinuous_iff_left
 
+/- warning: filter.has_basis.uniform_equicontinuous_iff_right -> Filter.HasBasis.uniformEquicontinuous_iff_right is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u3} β] {κ : Type.{u4}} {p : κ -> Prop} {s : κ -> (Set.{u2} (Prod.{u2, u2} α α))} {F : ι -> β -> α}, (Filter.HasBasis.{u2, succ u4} (Prod.{u2, u2} α α) κ (uniformity.{u2} α _inst_4) p s) -> (Iff (UniformEquicontinuous.{u1, u2, u3} ι α β _inst_4 _inst_5 F) (forall (k : κ), (p k) -> (Filter.Eventually.{u3} (Prod.{u3, u3} β β) (fun (xy : Prod.{u3, u3} β β) => forall (i : ι), Membership.Mem.{u2, u2} (Prod.{u2, u2} α α) (Set.{u2} (Prod.{u2, u2} α α)) (Set.hasMem.{u2} (Prod.{u2, u2} α α)) (Prod.mk.{u2, u2} α α (F i (Prod.fst.{u3, u3} β β xy)) (F i (Prod.snd.{u3, u3} β β xy))) (s k)) (uniformity.{u3} β _inst_5))))
+but is expected to have type
+  forall {ι : Type.{u2}} {α : Type.{u3}} {β : Type.{u1}} [_inst_4 : UniformSpace.{u3} α] [_inst_5 : UniformSpace.{u1} β] {κ : Type.{u4}} {p : κ -> Prop} {s : κ -> (Set.{u3} (Prod.{u3, u3} α α))} {F : ι -> β -> α}, (Filter.HasBasis.{u3, succ u4} (Prod.{u3, u3} α α) κ (uniformity.{u3} α _inst_4) p s) -> (Iff (UniformEquicontinuous.{u2, u3, u1} ι α β _inst_4 _inst_5 F) (forall (k : κ), (p k) -> (Filter.Eventually.{u1} (Prod.{u1, u1} β β) (fun (xy : Prod.{u1, u1} β β) => forall (i : ι), Membership.mem.{u3, u3} (Prod.{u3, u3} α α) (Set.{u3} (Prod.{u3, u3} α α)) (Set.instMembershipSet.{u3} (Prod.{u3, u3} α α)) (Prod.mk.{u3, u3} α α (F i (Prod.fst.{u1, u1} β β xy)) (F i (Prod.snd.{u1, u1} β β xy))) (s k)) (uniformity.{u1} β _inst_5))))
+Case conversion may be inaccurate. Consider using '#align filter.has_basis.uniform_equicontinuous_iff_right Filter.HasBasis.uniformEquicontinuous_iff_rightₓ'. -/
 theorem Filter.HasBasis.uniformEquicontinuous_iff_right {κ : Type _} {p : κ → Prop}
     {s : κ → Set (α × α)} {F : ι → β → α} (hα : (𝓤 α).HasBasis p s) :
     UniformEquicontinuous F ↔ ∀ k, p k → ∀ᶠ xy : β × β in 𝓤 β, ∀ i, (F i xy.1, F i xy.2) ∈ s k :=
@@ -321,6 +483,12 @@ theorem Filter.HasBasis.uniformEquicontinuous_iff_right {κ : Type _} {p : κ 
   rfl
 #align filter.has_basis.uniform_equicontinuous_iff_right Filter.HasBasis.uniformEquicontinuous_iff_right
 
+/- warning: filter.has_basis.uniform_equicontinuous_iff -> Filter.HasBasis.uniformEquicontinuous_iff is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u3} β] {κ₁ : Type.{u4}} {κ₂ : Type.{u5}} {p₁ : κ₁ -> Prop} {s₁ : κ₁ -> (Set.{u3} (Prod.{u3, u3} β β))} {p₂ : κ₂ -> Prop} {s₂ : κ₂ -> (Set.{u2} (Prod.{u2, u2} α α))} {F : ι -> β -> α}, (Filter.HasBasis.{u3, succ u4} (Prod.{u3, u3} β β) κ₁ (uniformity.{u3} β _inst_5) p₁ s₁) -> (Filter.HasBasis.{u2, succ u5} (Prod.{u2, u2} α α) κ₂ (uniformity.{u2} α _inst_4) p₂ s₂) -> (Iff (UniformEquicontinuous.{u1, u2, u3} ι α β _inst_4 _inst_5 F) (forall (k₂ : κ₂), (p₂ k₂) -> (Exists.{succ u4} κ₁ (fun (k₁ : κ₁) => Exists.{0} (p₁ k₁) (fun (_x : p₁ k₁) => forall (x : β) (y : β), (Membership.Mem.{u3, u3} (Prod.{u3, u3} β β) (Set.{u3} (Prod.{u3, u3} β β)) (Set.hasMem.{u3} (Prod.{u3, u3} β β)) (Prod.mk.{u3, u3} β β x y) (s₁ k₁)) -> (forall (i : ι), Membership.Mem.{u2, u2} (Prod.{u2, u2} α α) (Set.{u2} (Prod.{u2, u2} α α)) (Set.hasMem.{u2} (Prod.{u2, u2} α α)) (Prod.mk.{u2, u2} α α (F i x) (F i y)) (s₂ k₂)))))))
+but is expected to have type
+  forall {ι : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u3} β] {κ₁ : Type.{u5}} {κ₂ : Type.{u4}} {p₁ : κ₁ -> Prop} {s₁ : κ₁ -> (Set.{u3} (Prod.{u3, u3} β β))} {p₂ : κ₂ -> Prop} {s₂ : κ₂ -> (Set.{u2} (Prod.{u2, u2} α α))} {F : ι -> β -> α}, (Filter.HasBasis.{u3, succ u5} (Prod.{u3, u3} β β) κ₁ (uniformity.{u3} β _inst_5) p₁ s₁) -> (Filter.HasBasis.{u2, succ u4} (Prod.{u2, u2} α α) κ₂ (uniformity.{u2} α _inst_4) p₂ s₂) -> (Iff (UniformEquicontinuous.{u1, u2, u3} ι α β _inst_4 _inst_5 F) (forall (k₂ : κ₂), (p₂ k₂) -> (Exists.{succ u5} κ₁ (fun (k₁ : κ₁) => Exists.{0} (p₁ k₁) (fun (_x : p₁ k₁) => forall (x : β) (y : β), (Membership.mem.{u3, u3} (Prod.{u3, u3} β β) (Set.{u3} (Prod.{u3, u3} β β)) (Set.instMembershipSet.{u3} (Prod.{u3, u3} β β)) (Prod.mk.{u3, u3} β β x y) (s₁ k₁)) -> (forall (i : ι), Membership.mem.{u2, u2} (Prod.{u2, u2} α α) (Set.{u2} (Prod.{u2, u2} α α)) (Set.instMembershipSet.{u2} (Prod.{u2, u2} α α)) (Prod.mk.{u2, u2} α α (F i x) (F i y)) (s₂ k₂)))))))
+Case conversion may be inaccurate. Consider using '#align filter.has_basis.uniform_equicontinuous_iff Filter.HasBasis.uniformEquicontinuous_iffₓ'. -/
 theorem Filter.HasBasis.uniformEquicontinuous_iff {κ₁ κ₂ : Type _} {p₁ : κ₁ → Prop}
     {s₁ : κ₁ → Set (β × β)} {p₂ : κ₂ → Prop} {s₂ : κ₂ → Set (α × α)} {F : ι → β → α}
     (hβ : (𝓤 β).HasBasis p₁ s₁) (hα : (𝓤 α).HasBasis p₂ s₂) :
@@ -333,6 +501,12 @@ theorem Filter.HasBasis.uniformEquicontinuous_iff {κ₁ κ₂ : Type _} {p₁ :
   rfl
 #align filter.has_basis.uniform_equicontinuous_iff Filter.HasBasis.uniformEquicontinuous_iff
 
+/- warning: uniform_inducing.equicontinuous_at_iff -> UniformInducing.equicontinuousAt_iff is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} {X : Type.{u2}} {α : Type.{u3}} {β : Type.{u4}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u3} α] [_inst_5 : UniformSpace.{u4} β] {F : ι -> X -> α} {x₀ : X} {u : α -> β}, (UniformInducing.{u3, u4} α β _inst_4 _inst_5 u) -> (Iff (EquicontinuousAt.{u1, u2, u3} ι X α _inst_1 _inst_4 F x₀) (EquicontinuousAt.{u1, u2, u4} ι X β _inst_1 _inst_5 (Function.comp.{succ u1, max (succ u2) (succ u3), max (succ u2) (succ u4)} ι (X -> α) (X -> β) (Function.comp.{succ u2, succ u3, succ u4} X α β u) F) x₀))
+but is expected to have type
+  forall {ι : Type.{u2}} {X : Type.{u1}} {α : Type.{u4}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : UniformSpace.{u4} α] [_inst_5 : UniformSpace.{u3} β] {F : ι -> X -> α} {x₀ : X} {u : α -> β}, (UniformInducing.{u4, u3} α β _inst_4 _inst_5 u) -> (Iff (EquicontinuousAt.{u2, u1, u4} ι X α _inst_1 _inst_4 F x₀) (EquicontinuousAt.{u2, u1, u3} ι X β _inst_1 _inst_5 (Function.comp.{succ u2, max (succ u4) (succ u1), max (succ u3) (succ u1)} ι (X -> α) (X -> β) ((fun (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3096 : α -> β) (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3098 : X -> α) => Function.comp.{succ u1, succ u4, succ u3} X α β x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3096 x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3098) u) F) x₀))
+Case conversion may be inaccurate. Consider using '#align uniform_inducing.equicontinuous_at_iff UniformInducing.equicontinuousAt_iffₓ'. -/
 /-- Given `u : α → β` a uniform inducing map, a family `𝓕 : ι → X → α` is equicontinuous at a point
 `x₀ : X` iff the family `𝓕'`, obtained by precomposing each function of `𝓕` by `u`, is
 equicontinuous at `x₀`. -/
@@ -344,6 +518,12 @@ theorem UniformInducing.equicontinuousAt_iff {F : ι → X → α} {x₀ : X} {u
   rfl
 #align uniform_inducing.equicontinuous_at_iff UniformInducing.equicontinuousAt_iff
 
+/- warning: uniform_inducing.equicontinuous_iff -> UniformInducing.equicontinuous_iff is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} {X : Type.{u2}} {α : Type.{u3}} {β : Type.{u4}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u3} α] [_inst_5 : UniformSpace.{u4} β] {F : ι -> X -> α} {u : α -> β}, (UniformInducing.{u3, u4} α β _inst_4 _inst_5 u) -> (Iff (Equicontinuous.{u1, u2, u3} ι X α _inst_1 _inst_4 F) (Equicontinuous.{u1, u2, u4} ι X β _inst_1 _inst_5 (Function.comp.{succ u1, max (succ u2) (succ u3), max (succ u2) (succ u4)} ι (X -> α) (X -> β) (Function.comp.{succ u2, succ u3, succ u4} X α β u) F)))
+but is expected to have type
+  forall {ι : Type.{u2}} {X : Type.{u1}} {α : Type.{u4}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : UniformSpace.{u4} α] [_inst_5 : UniformSpace.{u3} β] {F : ι -> X -> α} {u : α -> β}, (UniformInducing.{u4, u3} α β _inst_4 _inst_5 u) -> (Iff (Equicontinuous.{u2, u1, u4} ι X α _inst_1 _inst_4 F) (Equicontinuous.{u2, u1, u3} ι X β _inst_1 _inst_5 (Function.comp.{succ u2, max (succ u4) (succ u1), max (succ u3) (succ u1)} ι (X -> α) (X -> β) ((fun (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3235 : α -> β) (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3237 : X -> α) => Function.comp.{succ u1, succ u4, succ u3} X α β x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3235 x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3237) u) F)))
+Case conversion may be inaccurate. Consider using '#align uniform_inducing.equicontinuous_iff UniformInducing.equicontinuous_iffₓ'. -/
 /- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:76:14: unsupported tactic `congrm #[[expr ∀ x, (_ : exprProp())]] -/
 /-- Given `u : α → β` a uniform inducing map, a family `𝓕 : ι → X → α` is equicontinuous iff the
 family `𝓕'`, obtained by precomposing each function of `𝓕` by `u`, is equicontinuous. -/
@@ -355,6 +535,12 @@ theorem UniformInducing.equicontinuous_iff {F : ι → X → α} {u : α → β}
   rw [hu.equicontinuous_at_iff]
 #align uniform_inducing.equicontinuous_iff UniformInducing.equicontinuous_iff
 
+/- warning: uniform_inducing.uniform_equicontinuous_iff -> UniformInducing.uniformEquicontinuous_iff is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} {γ : Type.{u4}} [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u3} β] [_inst_6 : UniformSpace.{u4} γ] {F : ι -> β -> α} {u : α -> γ}, (UniformInducing.{u2, u4} α γ _inst_4 _inst_6 u) -> (Iff (UniformEquicontinuous.{u1, u2, u3} ι α β _inst_4 _inst_5 F) (UniformEquicontinuous.{u1, u4, u3} ι γ β _inst_6 _inst_5 (Function.comp.{succ u1, max (succ u3) (succ u2), max (succ u3) (succ u4)} ι (β -> α) (β -> γ) (Function.comp.{succ u3, succ u2, succ u4} β α γ u) F)))
+but is expected to have type
+  forall {ι : Type.{u2}} {α : Type.{u4}} {β : Type.{u1}} {γ : Type.{u3}} [_inst_4 : UniformSpace.{u4} α] [_inst_5 : UniformSpace.{u1} β] [_inst_6 : UniformSpace.{u3} γ] {F : ι -> β -> α} {u : α -> γ}, (UniformInducing.{u4, u3} α γ _inst_4 _inst_6 u) -> (Iff (UniformEquicontinuous.{u2, u4, u1} ι α β _inst_4 _inst_5 F) (UniformEquicontinuous.{u2, u3, u1} ι γ β _inst_6 _inst_5 (Function.comp.{succ u2, max (succ u4) (succ u1), max (succ u1) (succ u3)} ι (β -> α) (β -> γ) ((fun (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3422 : α -> γ) (x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3424 : β -> α) => Function.comp.{succ u1, succ u4, succ u3} β α γ x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3422 x._@.Mathlib.Topology.UniformSpace.Equicontinuity._hyg.3424) u) F)))
+Case conversion may be inaccurate. Consider using '#align uniform_inducing.uniform_equicontinuous_iff UniformInducing.uniformEquicontinuous_iffₓ'. -/
 /-- Given `u : α → γ` a uniform inducing map, a family `𝓕 : ι → β → α` is uniformly equicontinuous
 iff the family `𝓕'`, obtained by precomposing each function of `𝓕` by `u`, is uniformly
 equicontinuous. -/
@@ -367,6 +553,12 @@ theorem UniformInducing.uniformEquicontinuous_iff {F : ι → β → α} {u : α
   rfl
 #align uniform_inducing.uniform_equicontinuous_iff UniformInducing.uniformEquicontinuous_iff
 
+/- warning: equicontinuous_at.closure' -> EquicontinuousAt.closure' is a dubious translation:
+lean 3 declaration is
+  forall {X : Type.{u1}} {Y : Type.{u2}} {α : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u2} Y] [_inst_4 : UniformSpace.{u3} α] {A : Set.{u2} Y} {u : Y -> X -> α} {x₀ : X}, (EquicontinuousAt.{u2, u1, u3} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} Y) Type.{u2} (Set.hasCoeToSort.{u2} Y) A) X α _inst_1 _inst_4 (Function.comp.{succ u2, succ u2, max (succ u1) (succ u3)} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} Y) Type.{u2} (Set.hasCoeToSort.{u2} Y) A) Y (X -> α) u ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} Y) Type.{u2} (Set.hasCoeToSort.{u2} Y) A) Y (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} Y) Type.{u2} (Set.hasCoeToSort.{u2} Y) A) Y (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} Y) Type.{u2} (Set.hasCoeToSort.{u2} Y) A) Y (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} Y) Type.{u2} (Set.hasCoeToSort.{u2} Y) A) Y (coeSubtype.{succ u2} Y (fun (x : Y) => Membership.Mem.{u2, u2} Y (Set.{u2} Y) (Set.hasMem.{u2} Y) x A))))))) x₀) -> (Continuous.{u2, max u1 u3} Y (X -> α) _inst_2 (Pi.topologicalSpace.{u1, u3} X (fun (ᾰ : X) => α) (fun (a : X) => UniformSpace.toTopologicalSpace.{u3} α _inst_4)) u) -> (EquicontinuousAt.{u2, u1, u3} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} Y) Type.{u2} (Set.hasCoeToSort.{u2} Y) (closure.{u2} Y _inst_2 A)) X α _inst_1 _inst_4 (Function.comp.{succ u2, succ u2, max (succ u1) (succ u3)} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} Y) Type.{u2} (Set.hasCoeToSort.{u2} Y) (closure.{u2} Y _inst_2 A)) Y (X -> α) u ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} Y) Type.{u2} (Set.hasCoeToSort.{u2} Y) (closure.{u2} Y _inst_2 A)) Y (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} Y) Type.{u2} (Set.hasCoeToSort.{u2} Y) (closure.{u2} Y _inst_2 A)) Y (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} Y) Type.{u2} (Set.hasCoeToSort.{u2} Y) (closure.{u2} Y _inst_2 A)) Y (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} Y) Type.{u2} (Set.hasCoeToSort.{u2} Y) (closure.{u2} Y _inst_2 A)) Y (coeSubtype.{succ u2} Y (fun (x : Y) => Membership.Mem.{u2, u2} Y (Set.{u2} Y) (Set.hasMem.{u2} Y) x (closure.{u2} Y _inst_2 A)))))))) x₀)
+but is expected to have type
+  forall {X : Type.{u2}} {Y : Type.{u3}} {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : TopologicalSpace.{u3} Y] [_inst_4 : UniformSpace.{u1} α] {A : Set.{u3} Y} {u : Y -> X -> α} {x₀ : X}, (EquicontinuousAt.{u3, u2, u1} (Set.Elem.{u3} Y A) X α _inst_1 _inst_4 (Function.comp.{succ u3, succ u3, max (succ u2) (succ u1)} (Set.Elem.{u3} Y A) Y (X -> α) u (Subtype.val.{succ u3} Y (fun (x : Y) => Membership.mem.{u3, u3} Y (Set.{u3} Y) (Set.instMembershipSet.{u3} Y) x A))) x₀) -> (Continuous.{u3, max u2 u1} Y (X -> α) _inst_2 (Pi.topologicalSpace.{u2, u1} X (fun (ᾰ : X) => α) (fun (a : X) => UniformSpace.toTopologicalSpace.{u1} α _inst_4)) u) -> (EquicontinuousAt.{u3, u2, u1} (Set.Elem.{u3} Y (closure.{u3} Y _inst_2 A)) X α _inst_1 _inst_4 (Function.comp.{succ u3, succ u3, max (succ u2) (succ u1)} (Set.Elem.{u3} Y (closure.{u3} Y _inst_2 A)) Y (X -> α) u (Subtype.val.{succ u3} Y (fun (x : Y) => Membership.mem.{u3, u3} Y (Set.{u3} Y) (Set.instMembershipSet.{u3} Y) x (closure.{u3} Y _inst_2 A)))) x₀)
+Case conversion may be inaccurate. Consider using '#align equicontinuous_at.closure' EquicontinuousAt.closure'ₓ'. -/
 /-- A version of `equicontinuous_at.closure` applicable to subsets of types which embed continuously
 into `X → α` with the product topology. It turns out we don't need any other condition on the
 embedding than continuity, but in practice this will mostly be applied to `fun_like` types where
@@ -384,6 +576,12 @@ theorem EquicontinuousAt.closure' {A : Set Y} {u : Y → X → α} {x₀ : X}
   exact Continuous.prod_mk ((continuous_apply x₀).comp hu) ((continuous_apply x).comp hu)
 #align equicontinuous_at.closure' EquicontinuousAt.closure'
 
+/- warning: equicontinuous_at.closure -> EquicontinuousAt.closure is a dubious translation:
+lean 3 declaration is
+  forall {X : Type.{u1}} {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : UniformSpace.{u2} α] {A : Set.{max u1 u2} (X -> α)} {x₀ : X}, (Set.EquicontinuousAt.{u1, u2} X α _inst_1 _inst_4 A x₀) -> (Set.EquicontinuousAt.{u1, u2} X α _inst_1 _inst_4 (closure.{max u1 u2} (X -> α) (Pi.topologicalSpace.{u1, u2} X (fun (ᾰ : X) => α) (fun (a : X) => UniformSpace.toTopologicalSpace.{u2} α _inst_4)) A) x₀)
+but is expected to have type
+  forall {X : Type.{u2}} {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u1} α] {A : Set.{max u2 u1} (X -> α)} {x₀ : X}, (Set.EquicontinuousAt.{u2, u1} X α _inst_1 _inst_4 A x₀) -> (Set.EquicontinuousAt.{u2, u1} X α _inst_1 _inst_4 (closure.{max u2 u1} (X -> α) (Pi.topologicalSpace.{u2, u1} X (fun (ᾰ : X) => α) (fun (a : X) => UniformSpace.toTopologicalSpace.{u1} α _inst_4)) A) x₀)
+Case conversion may be inaccurate. Consider using '#align equicontinuous_at.closure EquicontinuousAt.closureₓ'. -/
 /-- If a set of functions is equicontinuous at some `x₀`, its closure for the product topology is
 also equicontinuous at `x₀`. -/
 theorem EquicontinuousAt.closure {A : Set <| X → α} {x₀ : X} (hA : A.EquicontinuousAt x₀) :
@@ -391,6 +589,12 @@ theorem EquicontinuousAt.closure {A : Set <| X → α} {x₀ : X} (hA : A.Equico
   @EquicontinuousAt.closure' _ _ _ _ _ _ _ id _ hA continuous_id
 #align equicontinuous_at.closure EquicontinuousAt.closure
 
+/- warning: filter.tendsto.continuous_at_of_equicontinuous_at -> Filter.Tendsto.continuousAt_of_equicontinuousAt is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} {X : Type.{u2}} {α : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u3} α] {l : Filter.{u1} ι} [_inst_7 : Filter.NeBot.{u1} ι l] {F : ι -> X -> α} {f : X -> α} {x₀ : X}, (Filter.Tendsto.{u1, max u2 u3} ι (X -> α) F l (nhds.{max u2 u3} (X -> α) (Pi.topologicalSpace.{u2, u3} X (fun (ᾰ : X) => α) (fun (a : X) => UniformSpace.toTopologicalSpace.{u3} α _inst_4)) f)) -> (EquicontinuousAt.{u1, u2, u3} ι X α _inst_1 _inst_4 F x₀) -> (ContinuousAt.{u2, u3} X α _inst_1 (UniformSpace.toTopologicalSpace.{u3} α _inst_4) f x₀)
+but is expected to have type
+  forall {ι : Type.{u3}} {X : Type.{u2}} {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u1} α] {l : Filter.{u3} ι} [_inst_7 : Filter.NeBot.{u3} ι l] {F : ι -> X -> α} {f : X -> α} {x₀ : X}, (Filter.Tendsto.{u3, max u2 u1} ι (X -> α) F l (nhds.{max u2 u1} (X -> α) (Pi.topologicalSpace.{u2, u1} X (fun (ᾰ : X) => α) (fun (a : X) => UniformSpace.toTopologicalSpace.{u1} α _inst_4)) f)) -> (EquicontinuousAt.{u3, u2, u1} ι X α _inst_1 _inst_4 F x₀) -> (ContinuousAt.{u2, u1} X α _inst_1 (UniformSpace.toTopologicalSpace.{u1} α _inst_4) f x₀)
+Case conversion may be inaccurate. Consider using '#align filter.tendsto.continuous_at_of_equicontinuous_at Filter.Tendsto.continuousAt_of_equicontinuousAtₓ'. -/
 /-- If `𝓕 : ι → X → α` tends to `f : X → α` *pointwise* along some nontrivial filter, and if the
 family `𝓕` is equicontinuous at some `x₀ : X`, then the limit is continuous at `x₀`. -/
 theorem Filter.Tendsto.continuousAt_of_equicontinuousAt {l : Filter ι} [l.ne_bot] {F : ι → X → α}
@@ -400,6 +604,12 @@ theorem Filter.Tendsto.continuousAt_of_equicontinuousAt {l : Filter ι} [l.ne_bo
     ⟨f, mem_closure_of_tendsto h₁ <| eventually_of_forall mem_range_self⟩
 #align filter.tendsto.continuous_at_of_equicontinuous_at Filter.Tendsto.continuousAt_of_equicontinuousAt
 
+/- warning: equicontinuous.closure' -> Equicontinuous.closure' is a dubious translation:
+lean 3 declaration is
+  forall {X : Type.{u1}} {Y : Type.{u2}} {α : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u2} Y] [_inst_4 : UniformSpace.{u3} α] {A : Set.{u2} Y} {u : Y -> X -> α}, (Equicontinuous.{u2, u1, u3} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} Y) Type.{u2} (Set.hasCoeToSort.{u2} Y) A) X α _inst_1 _inst_4 (Function.comp.{succ u2, succ u2, max (succ u1) (succ u3)} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} Y) Type.{u2} (Set.hasCoeToSort.{u2} Y) A) Y (X -> α) u ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} Y) Type.{u2} (Set.hasCoeToSort.{u2} Y) A) Y (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} Y) Type.{u2} (Set.hasCoeToSort.{u2} Y) A) Y (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} Y) Type.{u2} (Set.hasCoeToSort.{u2} Y) A) Y (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} Y) Type.{u2} (Set.hasCoeToSort.{u2} Y) A) Y (coeSubtype.{succ u2} Y (fun (x : Y) => Membership.Mem.{u2, u2} Y (Set.{u2} Y) (Set.hasMem.{u2} Y) x A)))))))) -> (Continuous.{u2, max u1 u3} Y (X -> α) _inst_2 (Pi.topologicalSpace.{u1, u3} X (fun (ᾰ : X) => α) (fun (a : X) => UniformSpace.toTopologicalSpace.{u3} α _inst_4)) u) -> (Equicontinuous.{u2, u1, u3} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} Y) Type.{u2} (Set.hasCoeToSort.{u2} Y) (closure.{u2} Y _inst_2 A)) X α _inst_1 _inst_4 (Function.comp.{succ u2, succ u2, max (succ u1) (succ u3)} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} Y) Type.{u2} (Set.hasCoeToSort.{u2} Y) (closure.{u2} Y _inst_2 A)) Y (X -> α) u ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} Y) Type.{u2} (Set.hasCoeToSort.{u2} Y) (closure.{u2} Y _inst_2 A)) Y (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} Y) Type.{u2} (Set.hasCoeToSort.{u2} Y) (closure.{u2} Y _inst_2 A)) Y (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} Y) Type.{u2} (Set.hasCoeToSort.{u2} Y) (closure.{u2} Y _inst_2 A)) Y (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} Y) Type.{u2} (Set.hasCoeToSort.{u2} Y) (closure.{u2} Y _inst_2 A)) Y (coeSubtype.{succ u2} Y (fun (x : Y) => Membership.Mem.{u2, u2} Y (Set.{u2} Y) (Set.hasMem.{u2} Y) x (closure.{u2} Y _inst_2 A)))))))))
+but is expected to have type
+  forall {X : Type.{u2}} {Y : Type.{u3}} {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : TopologicalSpace.{u3} Y] [_inst_4 : UniformSpace.{u1} α] {A : Set.{u3} Y} {u : Y -> X -> α}, (Equicontinuous.{u3, u2, u1} (Set.Elem.{u3} Y A) X α _inst_1 _inst_4 (Function.comp.{succ u3, succ u3, max (succ u2) (succ u1)} (Set.Elem.{u3} Y A) Y (X -> α) u (Subtype.val.{succ u3} Y (fun (x : Y) => Membership.mem.{u3, u3} Y (Set.{u3} Y) (Set.instMembershipSet.{u3} Y) x A)))) -> (Continuous.{u3, max u2 u1} Y (X -> α) _inst_2 (Pi.topologicalSpace.{u2, u1} X (fun (ᾰ : X) => α) (fun (a : X) => UniformSpace.toTopologicalSpace.{u1} α _inst_4)) u) -> (Equicontinuous.{u3, u2, u1} (Set.Elem.{u3} Y (closure.{u3} Y _inst_2 A)) X α _inst_1 _inst_4 (Function.comp.{succ u3, succ u3, max (succ u2) (succ u1)} (Set.Elem.{u3} Y (closure.{u3} Y _inst_2 A)) Y (X -> α) u (Subtype.val.{succ u3} Y (fun (x : Y) => Membership.mem.{u3, u3} Y (Set.{u3} Y) (Set.instMembershipSet.{u3} Y) x (closure.{u3} Y _inst_2 A)))))
+Case conversion may be inaccurate. Consider using '#align equicontinuous.closure' Equicontinuous.closure'ₓ'. -/
 /-- A version of `equicontinuous.closure` applicable to subsets of types which embed continuously
 into `X → α` with the product topology. It turns out we don't need any other condition on the
 embedding than continuity, but in practice this will mostly be applied to `fun_like` types where
@@ -409,12 +619,24 @@ theorem Equicontinuous.closure' {A : Set Y} {u : Y → X → α}
     Equicontinuous (u ∘ coe : closure A → X → α) := fun x => (hA x).closure' hu
 #align equicontinuous.closure' Equicontinuous.closure'
 
+/- warning: equicontinuous.closure -> Equicontinuous.closure is a dubious translation:
+lean 3 declaration is
+  forall {X : Type.{u1}} {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : UniformSpace.{u2} α] {A : Set.{max u1 u2} (X -> α)}, (Set.Equicontinuous.{u1, u2} X α _inst_1 _inst_4 A) -> (Set.Equicontinuous.{u1, u2} X α _inst_1 _inst_4 (closure.{max u1 u2} (X -> α) (Pi.topologicalSpace.{u1, u2} X (fun (ᾰ : X) => α) (fun (a : X) => UniformSpace.toTopologicalSpace.{u2} α _inst_4)) A))
+but is expected to have type
+  forall {X : Type.{u2}} {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u1} α] {A : Set.{max u2 u1} (X -> α)}, (Set.Equicontinuous.{u2, u1} X α _inst_1 _inst_4 A) -> (Set.Equicontinuous.{u2, u1} X α _inst_1 _inst_4 (closure.{max u2 u1} (X -> α) (Pi.topologicalSpace.{u2, u1} X (fun (ᾰ : X) => α) (fun (a : X) => UniformSpace.toTopologicalSpace.{u1} α _inst_4)) A))
+Case conversion may be inaccurate. Consider using '#align equicontinuous.closure Equicontinuous.closureₓ'. -/
 /-- If a set of functions is equicontinuous, its closure for the product topology is also
 equicontinuous. -/
 theorem Equicontinuous.closure {A : Set <| X → α} (hA : A.Equicontinuous) :
     (closure A).Equicontinuous := fun x => (hA x).closure
 #align equicontinuous.closure Equicontinuous.closure
 
+/- warning: filter.tendsto.continuous_of_equicontinuous_at -> Filter.Tendsto.continuous_of_equicontinuous_at is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} {X : Type.{u2}} {α : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u3} α] {l : Filter.{u1} ι} [_inst_7 : Filter.NeBot.{u1} ι l] {F : ι -> X -> α} {f : X -> α}, (Filter.Tendsto.{u1, max u2 u3} ι (X -> α) F l (nhds.{max u2 u3} (X -> α) (Pi.topologicalSpace.{u2, u3} X (fun (ᾰ : X) => α) (fun (a : X) => UniformSpace.toTopologicalSpace.{u3} α _inst_4)) f)) -> (Equicontinuous.{u1, u2, u3} ι X α _inst_1 _inst_4 F) -> (Continuous.{u2, u3} X α _inst_1 (UniformSpace.toTopologicalSpace.{u3} α _inst_4) f)
+but is expected to have type
+  forall {ι : Type.{u3}} {X : Type.{u2}} {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_4 : UniformSpace.{u1} α] {l : Filter.{u3} ι} [_inst_7 : Filter.NeBot.{u3} ι l] {F : ι -> X -> α} {f : X -> α}, (Filter.Tendsto.{u3, max u2 u1} ι (X -> α) F l (nhds.{max u2 u1} (X -> α) (Pi.topologicalSpace.{u2, u1} X (fun (ᾰ : X) => α) (fun (a : X) => UniformSpace.toTopologicalSpace.{u1} α _inst_4)) f)) -> (Equicontinuous.{u3, u2, u1} ι X α _inst_1 _inst_4 F) -> (Continuous.{u2, u1} X α _inst_1 (UniformSpace.toTopologicalSpace.{u1} α _inst_4) f)
+Case conversion may be inaccurate. Consider using '#align filter.tendsto.continuous_of_equicontinuous_at Filter.Tendsto.continuous_of_equicontinuous_atₓ'. -/
 /-- If `𝓕 : ι → X → α` tends to `f : X → α` *pointwise* along some nontrivial filter, and if the
 family `𝓕` is equicontinuous, then the limit is continuous. -/
 theorem Filter.Tendsto.continuous_of_equicontinuous_at {l : Filter ι} [l.ne_bot] {F : ι → X → α}
@@ -422,6 +644,12 @@ theorem Filter.Tendsto.continuous_of_equicontinuous_at {l : Filter ι} [l.ne_bot
   continuous_iff_continuousAt.mpr fun x => h₁.continuousAt_of_equicontinuousAt (h₂ x)
 #align filter.tendsto.continuous_of_equicontinuous_at Filter.Tendsto.continuous_of_equicontinuous_at
 
+/- warning: uniform_equicontinuous.closure' -> UniformEquicontinuous.closure' is a dubious translation:
+lean 3 declaration is
+  forall {Y : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_2 : TopologicalSpace.{u1} Y] [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u3} β] {A : Set.{u1} Y} {u : Y -> β -> α}, (UniformEquicontinuous.{u1, u2, u3} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} Y) Type.{u1} (Set.hasCoeToSort.{u1} Y) A) α β _inst_4 _inst_5 (Function.comp.{succ u1, succ u1, max (succ u3) (succ u2)} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} Y) Type.{u1} (Set.hasCoeToSort.{u1} Y) A) Y (β -> α) u ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Set.{u1} Y) Type.{u1} (Set.hasCoeToSort.{u1} Y) A) Y (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} Y) Type.{u1} (Set.hasCoeToSort.{u1} Y) A) Y (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} Y) Type.{u1} (Set.hasCoeToSort.{u1} Y) A) Y (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} Y) Type.{u1} (Set.hasCoeToSort.{u1} Y) A) Y (coeSubtype.{succ u1} Y (fun (x : Y) => Membership.Mem.{u1, u1} Y (Set.{u1} Y) (Set.hasMem.{u1} Y) x A)))))))) -> (Continuous.{u1, max u3 u2} Y (β -> α) _inst_2 (Pi.topologicalSpace.{u3, u2} β (fun (ᾰ : β) => α) (fun (a : β) => UniformSpace.toTopologicalSpace.{u2} α _inst_4)) u) -> (UniformEquicontinuous.{u1, u2, u3} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} Y) Type.{u1} (Set.hasCoeToSort.{u1} Y) (closure.{u1} Y _inst_2 A)) α β _inst_4 _inst_5 (Function.comp.{succ u1, succ u1, max (succ u3) (succ u2)} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} Y) Type.{u1} (Set.hasCoeToSort.{u1} Y) (closure.{u1} Y _inst_2 A)) Y (β -> α) u ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Set.{u1} Y) Type.{u1} (Set.hasCoeToSort.{u1} Y) (closure.{u1} Y _inst_2 A)) Y (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} Y) Type.{u1} (Set.hasCoeToSort.{u1} Y) (closure.{u1} Y _inst_2 A)) Y (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} Y) Type.{u1} (Set.hasCoeToSort.{u1} Y) (closure.{u1} Y _inst_2 A)) Y (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} Y) Type.{u1} (Set.hasCoeToSort.{u1} Y) (closure.{u1} Y _inst_2 A)) Y (coeSubtype.{succ u1} Y (fun (x : Y) => Membership.Mem.{u1, u1} Y (Set.{u1} Y) (Set.hasMem.{u1} Y) x (closure.{u1} Y _inst_2 A)))))))))
+but is expected to have type
+  forall {Y : Type.{u3}} {α : Type.{u2}} {β : Type.{u1}} [_inst_2 : TopologicalSpace.{u3} Y] [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u1} β] {A : Set.{u3} Y} {u : Y -> β -> α}, (UniformEquicontinuous.{u3, u2, u1} (Set.Elem.{u3} Y A) α β _inst_4 _inst_5 (Function.comp.{succ u3, succ u3, max (succ u2) (succ u1)} (Set.Elem.{u3} Y A) Y (β -> α) u (Subtype.val.{succ u3} Y (fun (x : Y) => Membership.mem.{u3, u3} Y (Set.{u3} Y) (Set.instMembershipSet.{u3} Y) x A)))) -> (Continuous.{u3, max u2 u1} Y (β -> α) _inst_2 (Pi.topologicalSpace.{u1, u2} β (fun (ᾰ : β) => α) (fun (a : β) => UniformSpace.toTopologicalSpace.{u2} α _inst_4)) u) -> (UniformEquicontinuous.{u3, u2, u1} (Set.Elem.{u3} Y (closure.{u3} Y _inst_2 A)) α β _inst_4 _inst_5 (Function.comp.{succ u3, succ u3, max (succ u2) (succ u1)} (Set.Elem.{u3} Y (closure.{u3} Y _inst_2 A)) Y (β -> α) u (Subtype.val.{succ u3} Y (fun (x : Y) => Membership.mem.{u3, u3} Y (Set.{u3} Y) (Set.instMembershipSet.{u3} Y) x (closure.{u3} Y _inst_2 A)))))
+Case conversion may be inaccurate. Consider using '#align uniform_equicontinuous.closure' UniformEquicontinuous.closure'ₓ'. -/
 /-- A version of `uniform_equicontinuous.closure` applicable to subsets of types which embed
 continuously into `β → α` with the product topology. It turns out we don't need any other condition
 on the embedding than continuity, but in practice this will mostly be applied to `fun_like` types
@@ -440,6 +668,12 @@ theorem UniformEquicontinuous.closure' {A : Set Y} {u : Y → β → α}
   exact Continuous.prod_mk ((continuous_apply x).comp hu) ((continuous_apply y).comp hu)
 #align uniform_equicontinuous.closure' UniformEquicontinuous.closure'
 
+/- warning: uniform_equicontinuous.closure -> UniformEquicontinuous.closure is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_4 : UniformSpace.{u1} α] [_inst_5 : UniformSpace.{u2} β] {A : Set.{max u2 u1} (β -> α)}, (Set.UniformEquicontinuous.{u1, u2} α β _inst_4 _inst_5 A) -> (Set.UniformEquicontinuous.{u1, u2} α β _inst_4 _inst_5 (closure.{max u2 u1} (β -> α) (Pi.topologicalSpace.{u2, u1} β (fun (ᾰ : β) => α) (fun (a : β) => UniformSpace.toTopologicalSpace.{u1} α _inst_4)) A))
+but is expected to have type
+  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u1} β] {A : Set.{max u2 u1} (β -> α)}, (Set.UniformEquicontinuous.{u2, u1} α β _inst_4 _inst_5 A) -> (Set.UniformEquicontinuous.{u2, u1} α β _inst_4 _inst_5 (closure.{max u2 u1} (β -> α) (Pi.topologicalSpace.{u1, u2} β (fun (ᾰ : β) => α) (fun (a : β) => UniformSpace.toTopologicalSpace.{u2} α _inst_4)) A))
+Case conversion may be inaccurate. Consider using '#align uniform_equicontinuous.closure UniformEquicontinuous.closureₓ'. -/
 /-- If a set of functions is uniformly equicontinuous, its closure for the product topology is also
 uniformly equicontinuous. -/
 theorem UniformEquicontinuous.closure {A : Set <| β → α} (hA : A.UniformEquicontinuous) :
@@ -447,6 +681,12 @@ theorem UniformEquicontinuous.closure {A : Set <| β → α} (hA : A.UniformEqui
   @UniformEquicontinuous.closure' _ _ _ _ _ _ _ id hA continuous_id
 #align uniform_equicontinuous.closure UniformEquicontinuous.closure
 
+/- warning: filter.tendsto.uniform_continuous_of_uniform_equicontinuous -> Filter.Tendsto.uniformContinuous_of_uniformEquicontinuous is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u3} β] {l : Filter.{u1} ι} [_inst_7 : Filter.NeBot.{u1} ι l] {F : ι -> β -> α} {f : β -> α}, (Filter.Tendsto.{u1, max u3 u2} ι (β -> α) F l (nhds.{max u3 u2} (β -> α) (Pi.topologicalSpace.{u3, u2} β (fun (ᾰ : β) => α) (fun (a : β) => UniformSpace.toTopologicalSpace.{u2} α _inst_4)) f)) -> (UniformEquicontinuous.{u1, u2, u3} ι α β _inst_4 _inst_5 F) -> (UniformContinuous.{u3, u2} β α _inst_5 _inst_4 f)
+but is expected to have type
+  forall {ι : Type.{u3}} {α : Type.{u2}} {β : Type.{u1}} [_inst_4 : UniformSpace.{u2} α] [_inst_5 : UniformSpace.{u1} β] {l : Filter.{u3} ι} [_inst_7 : Filter.NeBot.{u3} ι l] {F : ι -> β -> α} {f : β -> α}, (Filter.Tendsto.{u3, max u2 u1} ι (β -> α) F l (nhds.{max u2 u1} (β -> α) (Pi.topologicalSpace.{u1, u2} β (fun (ᾰ : β) => α) (fun (a : β) => UniformSpace.toTopologicalSpace.{u2} α _inst_4)) f)) -> (UniformEquicontinuous.{u3, u2, u1} ι α β _inst_4 _inst_5 F) -> (UniformContinuous.{u1, u2} β α _inst_5 _inst_4 f)
+Case conversion may be inaccurate. Consider using '#align filter.tendsto.uniform_continuous_of_uniform_equicontinuous Filter.Tendsto.uniformContinuous_of_uniformEquicontinuousₓ'. -/
 /-- If `𝓕 : ι → β → α` tends to `f : β → α` *pointwise* along some nontrivial filter, and if the
 family `𝓕` is uniformly equicontinuous, then the limit is uniformly continuous. -/
 theorem Filter.Tendsto.uniformContinuous_of_uniformEquicontinuous {l : Filter ι} [l.ne_bot]

Changes in mathlib4

mathlib3
mathlib4
style: replace '.-/' by '. -/' (#11938)

Purely automatic replacement. If this is in any way controversial; I'm happy to just close this PR.

Diff
@@ -909,7 +909,7 @@ protected theorem Set.UniformEquicontinuous.closure {A : Set <| β → α}
 
 /-- If a set of functions is uniformly equicontinuous on a set `S`, its closure for the product
 topology is also uniformly equicontinuous. This would also be true for the coarser topology of
-pointwise convergence on `S`, see `UniformEquicontinuousOn.closure'`.-/
+pointwise convergence on `S`, see `UniformEquicontinuousOn.closure'`. -/
 protected theorem Set.UniformEquicontinuousOn.closure {A : Set <| β → α} {S : Set β}
     (hA : A.UniformEquicontinuousOn S) : (closure A).UniformEquicontinuousOn S :=
   UniformEquicontinuousOn.closure' (u := id) hA (Pi.continuous_restrict _)
chore: tidy various files (#10362)
Diff
@@ -88,7 +88,7 @@ variable {ι κ X X' Y Z α α' β β' γ 𝓕 : Type*} [tX : TopologicalSpace X
   [tZ : TopologicalSpace Z] [uα : UniformSpace α] [uβ : UniformSpace β] [uγ : UniformSpace γ]
 
 /-- A family `F : ι → X → α` of functions from a topological space to a uniform space is
-*equicontinuous at `x₀ : X`* if, for all entourage `U ∈ 𝓤 α`, there is a neighborhood `V` of `x₀`
+*equicontinuous at `x₀ : X`* if, for all entourages `U ∈ 𝓤 α`, there is a neighborhood `V` of `x₀`
 such that, for all `x ∈ V` and for all `i : ι`, `F i x` is `U`-close to `F i x₀`. -/
 def EquicontinuousAt (F : ι → X → α) (x₀ : X) : Prop :=
   ∀ U ∈ 𝓤 α, ∀ᶠ x in 𝓝 x₀, ∀ i, (F i x₀, F i x) ∈ U
@@ -101,7 +101,7 @@ protected abbrev Set.EquicontinuousAt (H : Set <| X → α) (x₀ : X) : Prop :=
 #align set.equicontinuous_at Set.EquicontinuousAt
 
 /-- A family `F : ι → X → α` of functions from a topological space to a uniform space is
-*equicontinuous at `x₀ : X` within `S : Set X`* if, for all entourage `U ∈ 𝓤 α`, there is a
+*equicontinuous at `x₀ : X` within `S : Set X`* if, for all entourages `U ∈ 𝓤 α`, there is a
 neighborhood `V` of `x₀` within `S` such that, for all `x ∈ V` and for all `i : ι`, `F i x` is
 `U`-close to `F i x₀`. -/
 def EquicontinuousWithinAt (F : ι → X → α) (S : Set X) (x₀ : X) : Prop :=
@@ -135,7 +135,7 @@ protected abbrev Set.EquicontinuousOn (H : Set <| X → α) (S : Set X) : Prop :
   EquicontinuousOn ((↑) : H → X → α) S
 
 /-- A family `F : ι → β → α` of functions between uniform spaces is *uniformly equicontinuous* if,
-for all entourage `U ∈ 𝓤 α`, there is an entourage `V ∈ 𝓤 β` such that, whenever `x` and `y` are
+for all entourages `U ∈ 𝓤 α`, there is an entourage `V ∈ 𝓤 β` such that, whenever `x` and `y` are
 `V`-close, we have that, *for all `i : ι`*, `F i x` is `U`-close to `F i y`. -/
 def UniformEquicontinuous (F : ι → β → α) : Prop :=
   ∀ U ∈ 𝓤 α, ∀ᶠ xy : β × β in 𝓤 β, ∀ i, (F i xy.1, F i xy.2) ∈ U
@@ -148,7 +148,7 @@ protected abbrev Set.UniformEquicontinuous (H : Set <| β → α) : Prop :=
 #align set.uniform_equicontinuous Set.UniformEquicontinuous
 
 /-- A family `F : ι → β → α` of functions between uniform spaces is
-*uniformly equicontinuous on `S : Set β`* if, for all entourage `U ∈ 𝓤 α`, there is a relative
+*uniformly equicontinuous on `S : Set β`* if, for all entourages `U ∈ 𝓤 α`, there is a relative
 entourage `V ∈ 𝓤 β ⊓ 𝓟 (S ×ˢ S)` such that, whenever `x` and `y` are `V`-close, we have that,
 *for all `i : ι`*, `F i x` is `U`-close to `F i y`. -/
 def UniformEquicontinuousOn (F : ι → β → α) (S : Set β) : Prop :=
feat: relative versions of equicontinuity (#9286)

Co-authored-by: Heather Macbeth <25316162+hrmacbeth@users.noreply.github.com>

Diff
@@ -33,12 +33,16 @@ For maps between metric spaces, this corresponds to
 * `Equicontinuous`: equicontinuity of a family of functions on the whole domain
 * `UniformEquicontinuous`: uniform equicontinuity of a family of functions on the whole domain
 
+We also introduce relative versions, namely `EquicontinuousWithinAt`, `EquicontinuousOn` and
+`UniformEquicontinuousOn`, akin to `ContinuousWithinAt`, `ContinuousOn` and `UniformContinuousOn`
+respectively.
+
 ## Main statements
 
 * `equicontinuous_iff_continuous`: equicontinuity can be expressed as a simple continuity
   condition between well-chosen function spaces. This is really useful for building up the theory.
 * `Equicontinuous.closure`: if a set of functions is equicontinuous, its closure
-  *for the topology of uniform convergence* is also equicontinuous.
+  *for the topology of pointwise convergence* is also equicontinuous.
 
 ## Notations
 
@@ -66,11 +70,6 @@ and `Set.UniformEquicontinuous` asserting the corresponding fact about the famil
 `(↑) : ↥H → (X → α)` where `H : Set (X → α)`. Note however that these won't work for sets of hom
 types, and in that case one should go back to the family definition rather than using `Set.image`.
 
-Since we have no use case for it yet, we don't introduce any relative version
-(i.e no `EquicontinuousWithinAt` or `EquicontinuousOn`), but this is more of a conservative
-position than a design decision, so anyone needing relative versions should feel free to add them,
-and that should hopefully be a straightforward task.
-
 ## References
 
 * [N. Bourbaki, *General Topology, Chapter X*][bourbaki1966]
@@ -83,10 +82,10 @@ equicontinuity, uniform convergence, ascoli
 
 section
 
-open UniformSpace Filter Set Uniformity Topology UniformConvergence
+open UniformSpace Filter Set Uniformity Topology UniformConvergence Function
 
-variable {ι κ X Y Z α β γ 𝓕 : Type*} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z]
-  [UniformSpace α] [UniformSpace β] [UniformSpace γ]
+variable {ι κ X X' Y Z α α' β β' γ 𝓕 : Type*} [tX : TopologicalSpace X] [tY : TopologicalSpace Y]
+  [tZ : TopologicalSpace Z] [uα : UniformSpace α] [uβ : UniformSpace β] [uγ : UniformSpace γ]
 
 /-- A family `F : ι → X → α` of functions from a topological space to a uniform space is
 *equicontinuous at `x₀ : X`* if, for all entourage `U ∈ 𝓤 α`, there is a neighborhood `V` of `x₀`
@@ -101,6 +100,18 @@ protected abbrev Set.EquicontinuousAt (H : Set <| X → α) (x₀ : X) : Prop :=
   EquicontinuousAt ((↑) : H → X → α) x₀
 #align set.equicontinuous_at Set.EquicontinuousAt
 
+/-- A family `F : ι → X → α` of functions from a topological space to a uniform space is
+*equicontinuous at `x₀ : X` within `S : Set X`* if, for all entourage `U ∈ 𝓤 α`, there is a
+neighborhood `V` of `x₀` within `S` such that, for all `x ∈ V` and for all `i : ι`, `F i x` is
+`U`-close to `F i x₀`. -/
+def EquicontinuousWithinAt (F : ι → X → α) (S : Set X) (x₀ : X) : Prop :=
+  ∀ U ∈ 𝓤 α, ∀ᶠ x in 𝓝[S] x₀, ∀ i, (F i x₀, F i x) ∈ U
+
+/-- We say that a set `H : Set (X → α)` of functions is equicontinuous at a point within a subset
+if the family `(↑) : ↥H → (X → α)` is equicontinuous at that point within that same subset. -/
+protected abbrev Set.EquicontinuousWithinAt (H : Set <| X → α) (S : Set X) (x₀ : X) : Prop :=
+  EquicontinuousWithinAt ((↑) : H → X → α) S x₀
+
 /-- A family `F : ι → X → α` of functions from a topological space to a uniform space is
 *equicontinuous* on all of `X` if it is equicontinuous at each point of `X`. -/
 def Equicontinuous (F : ι → X → α) : Prop :=
@@ -113,9 +124,19 @@ protected abbrev Set.Equicontinuous (H : Set <| X → α) : Prop :=
   Equicontinuous ((↑) : H → X → α)
 #align set.equicontinuous Set.Equicontinuous
 
+/-- A family `F : ι → X → α` of functions from a topological space to a uniform space is
+*equicontinuous on `S : Set X`* if it is equicontinuous *within `S`* at each point of `S`. -/
+def EquicontinuousOn (F : ι → X → α) (S : Set X) : Prop :=
+  ∀ x₀ ∈ S, EquicontinuousWithinAt F S x₀
+
+/-- We say that a set `H : Set (X → α)` of functions is equicontinuous on a subset if the family
+`(↑) : ↥H → (X → α)` is equicontinuous on that subset. -/
+protected abbrev Set.EquicontinuousOn (H : Set <| X → α) (S : Set X) : Prop :=
+  EquicontinuousOn ((↑) : H → X → α) S
+
 /-- A family `F : ι → β → α` of functions between uniform spaces is *uniformly equicontinuous* if,
 for all entourage `U ∈ 𝓤 α`, there is an entourage `V ∈ 𝓤 β` such that, whenever `x` and `y` are
-`V`-close, we have that, *for all `i : ι`*, `F i x` is `U`-close to `F i x₀`. -/
+`V`-close, we have that, *for all `i : ι`*, `F i x` is `U`-close to `F i y`. -/
 def UniformEquicontinuous (F : ι → β → α) : Prop :=
   ∀ U ∈ 𝓤 α, ∀ᶠ xy : β × β in 𝓤 β, ∀ i, (F i xy.1, F i xy.2) ∈ U
 #align uniform_equicontinuous UniformEquicontinuous
@@ -126,6 +147,68 @@ protected abbrev Set.UniformEquicontinuous (H : Set <| β → α) : Prop :=
   UniformEquicontinuous ((↑) : H → β → α)
 #align set.uniform_equicontinuous Set.UniformEquicontinuous
 
+/-- A family `F : ι → β → α` of functions between uniform spaces is
+*uniformly equicontinuous on `S : Set β`* if, for all entourage `U ∈ 𝓤 α`, there is a relative
+entourage `V ∈ 𝓤 β ⊓ 𝓟 (S ×ˢ S)` such that, whenever `x` and `y` are `V`-close, we have that,
+*for all `i : ι`*, `F i x` is `U`-close to `F i y`. -/
+def UniformEquicontinuousOn (F : ι → β → α) (S : Set β) : Prop :=
+  ∀ U ∈ 𝓤 α, ∀ᶠ xy : β × β in 𝓤 β ⊓ 𝓟 (S ×ˢ S), ∀ i, (F i xy.1, F i xy.2) ∈ U
+
+/-- We say that a set `H : Set (X → α)` of functions is uniformly equicontinuous on a subset if the
+family `(↑) : ↥H → (X → α)` is uniformly equicontinuous on that subset. -/
+protected abbrev Set.UniformEquicontinuousOn (H : Set <| β → α) (S : Set β) : Prop :=
+  UniformEquicontinuousOn ((↑) : H → β → α) S
+
+lemma EquicontinuousAt.equicontinuousWithinAt {F : ι → X → α} {x₀ : X} (H : EquicontinuousAt F x₀)
+    (S : Set X) : EquicontinuousWithinAt F S x₀ :=
+  fun U hU ↦ (H U hU).filter_mono inf_le_left
+
+lemma EquicontinuousWithinAt.mono {F : ι → X → α} {x₀ : X} {S T : Set X}
+    (H : EquicontinuousWithinAt F T x₀) (hST : S ⊆ T) : EquicontinuousWithinAt F S x₀ :=
+  fun U hU ↦ (H U hU).filter_mono <| nhdsWithin_mono x₀ hST
+
+@[simp] lemma equicontinuousWithinAt_univ (F : ι → X → α) (x₀ : X) :
+    EquicontinuousWithinAt F univ x₀ ↔ EquicontinuousAt F x₀ := by
+  rw [EquicontinuousWithinAt, EquicontinuousAt, nhdsWithin_univ]
+
+lemma equicontinuousAt_restrict_iff (F : ι → X → α) {S : Set X} (x₀ : S) :
+    EquicontinuousAt (S.restrict ∘ F) x₀ ↔ EquicontinuousWithinAt F S x₀ := by
+  simp [EquicontinuousWithinAt, EquicontinuousAt,
+    ← eventually_nhds_subtype_iff]
+
+lemma Equicontinuous.equicontinuousOn {F : ι → X → α} (H : Equicontinuous F)
+    (S : Set X) : EquicontinuousOn F S :=
+  fun x _ ↦ (H x).equicontinuousWithinAt S
+
+lemma EquicontinuousOn.mono {F : ι → X → α} {S T : Set X}
+    (H : EquicontinuousOn F T) (hST : S ⊆ T) : EquicontinuousOn F S :=
+  fun x hx ↦ (H x (hST hx)).mono hST
+
+lemma equicontinuousOn_univ (F : ι → X → α) :
+    EquicontinuousOn F univ ↔ Equicontinuous F := by
+  simp [EquicontinuousOn, Equicontinuous]
+
+lemma equicontinuous_restrict_iff (F : ι → X → α) {S : Set X} :
+    Equicontinuous (S.restrict ∘ F) ↔ EquicontinuousOn F S := by
+  simp [Equicontinuous, EquicontinuousOn, equicontinuousAt_restrict_iff]
+
+lemma UniformEquicontinuous.uniformEquicontinuousOn {F : ι → β → α} (H : UniformEquicontinuous F)
+    (S : Set β) : UniformEquicontinuousOn F S :=
+  fun U hU ↦ (H U hU).filter_mono inf_le_left
+
+lemma UniformEquicontinuousOn.mono {F : ι → β → α} {S T : Set β}
+    (H : UniformEquicontinuousOn F T) (hST : S ⊆ T) : UniformEquicontinuousOn F S :=
+  fun U hU ↦ (H U hU).filter_mono <| inf_le_inf_left _ <| principal_mono.mpr <| prod_mono hST hST
+
+lemma uniformEquicontinuousOn_univ (F : ι → β → α) :
+    UniformEquicontinuousOn F univ ↔ UniformEquicontinuous F := by
+  simp [UniformEquicontinuousOn, UniformEquicontinuous]
+
+lemma uniformEquicontinuous_restrict_iff (F : ι → β → α) {S : Set β} :
+    UniformEquicontinuous (S.restrict ∘ F) ↔ UniformEquicontinuousOn F S := by
+  rw [UniformEquicontinuous, UniformEquicontinuousOn]
+  conv in _ ⊓ _ => rw [← Subtype.range_val (s := S), ← range_prod_map, ← map_comap]
+
 /-!
 ### Empty index type
 -/
@@ -135,16 +218,31 @@ lemma equicontinuousAt_empty [h : IsEmpty ι] (F : ι → X → α) (x₀ : X) :
     EquicontinuousAt F x₀ :=
   fun _ _ ↦ eventually_of_forall (fun _ ↦ h.elim)
 
+@[simp]
+lemma equicontinuousWithinAt_empty [h : IsEmpty ι] (F : ι → X → α) (S : Set X) (x₀ : X) :
+    EquicontinuousWithinAt F S x₀ :=
+  fun _ _ ↦ eventually_of_forall (fun _ ↦ h.elim)
+
 @[simp]
 lemma equicontinuous_empty [IsEmpty ι] (F : ι → X → α) :
     Equicontinuous F :=
   equicontinuousAt_empty F
 
+@[simp]
+lemma equicontinuousOn_empty [IsEmpty ι] (F : ι → X → α) (S : Set X) :
+    EquicontinuousOn F S :=
+  fun x₀ _ ↦ equicontinuousWithinAt_empty F S x₀
+
 @[simp]
 lemma uniformEquicontinuous_empty [h : IsEmpty ι] (F : ι → β → α) :
     UniformEquicontinuous F :=
   fun _ _ ↦ eventually_of_forall (fun _ ↦ h.elim)
 
+@[simp]
+lemma uniformEquicontinuousOn_empty [h : IsEmpty ι] (F : ι → β → α) (S : Set β) :
+    UniformEquicontinuousOn F S :=
+  fun _ _ ↦ eventually_of_forall (fun _ ↦ h.elim)
+
 /-!
 ### Finite index type
 -/
@@ -154,14 +252,28 @@ theorem equicontinuousAt_finite [Finite ι] {F : ι → X → α} {x₀ : X} :
   simp [EquicontinuousAt, ContinuousAt, (nhds_basis_uniformity' (𝓤 α).basis_sets).tendsto_right_iff,
     UniformSpace.ball, @forall_swap _ ι]
 
+theorem equicontinuousWithinAt_finite [Finite ι] {F : ι → X → α} {S : Set X} {x₀ : X} :
+    EquicontinuousWithinAt F S x₀ ↔ ∀ i, ContinuousWithinAt (F i) S x₀ := by
+  simp [EquicontinuousWithinAt, ContinuousWithinAt,
+    (nhds_basis_uniformity' (𝓤 α).basis_sets).tendsto_right_iff, UniformSpace.ball,
+    @forall_swap _ ι]
+
 theorem equicontinuous_finite [Finite ι] {F : ι → X → α} :
     Equicontinuous F ↔ ∀ i, Continuous (F i) := by
   simp only [Equicontinuous, equicontinuousAt_finite, continuous_iff_continuousAt, @forall_swap ι]
 
+theorem equicontinuousOn_finite [Finite ι] {F : ι → X → α} {S : Set X} :
+    EquicontinuousOn F S ↔ ∀ i, ContinuousOn (F i) S := by
+  simp only [EquicontinuousOn, equicontinuousWithinAt_finite, ContinuousOn, @forall_swap ι]
+
 theorem uniformEquicontinuous_finite [Finite ι] {F : ι → β → α} :
     UniformEquicontinuous F ↔ ∀ i, UniformContinuous (F i) := by
   simp only [UniformEquicontinuous, eventually_all, @forall_swap _ ι]; rfl
 
+theorem uniformEquicontinuousOn_finite [Finite ι] {F : ι → β → α} {S : Set β} :
+    UniformEquicontinuousOn F S ↔ ∀ i, UniformContinuousOn (F i) S := by
+  simp only [UniformEquicontinuousOn, eventually_all, @forall_swap _ ι]; rfl
+
 /-!
 ### Index type with a unique element
 -/
@@ -170,96 +282,180 @@ theorem equicontinuousAt_unique [Unique ι] {F : ι → X → α} {x : X} :
     EquicontinuousAt F x ↔ ContinuousAt (F default) x :=
   equicontinuousAt_finite.trans Unique.forall_iff
 
+theorem equicontinuousWithinAt_unique [Unique ι] {F : ι → X → α} {S : Set X} {x : X} :
+    EquicontinuousWithinAt F S x ↔ ContinuousWithinAt (F default) S x :=
+  equicontinuousWithinAt_finite.trans Unique.forall_iff
+
 theorem equicontinuous_unique [Unique ι] {F : ι → X → α} :
     Equicontinuous F ↔ Continuous (F default) :=
   equicontinuous_finite.trans Unique.forall_iff
 
+theorem equicontinuousOn_unique [Unique ι] {F : ι → X → α} {S : Set X} :
+    EquicontinuousOn F S ↔ ContinuousOn (F default) S :=
+  equicontinuousOn_finite.trans Unique.forall_iff
+
 theorem uniformEquicontinuous_unique [Unique ι] {F : ι → β → α} :
     UniformEquicontinuous F ↔ UniformContinuous (F default) :=
   uniformEquicontinuous_finite.trans Unique.forall_iff
 
-/-- Reformulation of equicontinuity at `x₀` comparing two variables near `x₀` instead of comparing
-only one with `x₀`. -/
-theorem equicontinuousAt_iff_pair {F : ι → X → α} {x₀ : X} :
-    EquicontinuousAt F x₀ ↔
-      ∀ U ∈ 𝓤 α, ∃ V ∈ 𝓝 x₀, ∀ x ∈ V, ∀ y ∈ V, ∀ i, (F i x, F i y) ∈ U := by
+theorem uniformEquicontinuousOn_unique [Unique ι] {F : ι → β → α} {S : Set β} :
+    UniformEquicontinuousOn F S ↔ UniformContinuousOn (F default) S :=
+  uniformEquicontinuousOn_finite.trans Unique.forall_iff
+
+/-- Reformulation of equicontinuity at `x₀` within a set `S`, comparing two variables near `x₀`
+instead of comparing only one with `x₀`. -/
+theorem equicontinuousWithinAt_iff_pair {F : ι → X → α} {S : Set X} {x₀ : X} (hx₀ : x₀ ∈ S) :
+    EquicontinuousWithinAt F S x₀ ↔
+      ∀ U ∈ 𝓤 α, ∃ V ∈ 𝓝[S] x₀, ∀ x ∈ V, ∀ y ∈ V, ∀ i, (F i x, F i y) ∈ U := by
   constructor <;> intro H U hU
   · rcases comp_symm_mem_uniformity_sets hU with ⟨V, hV, hVsymm, hVU⟩
     refine' ⟨_, H V hV, fun x hx y hy i => hVU (prod_mk_mem_compRel _ (hy i))⟩
     exact hVsymm.mk_mem_comm.mp (hx i)
   · rcases H U hU with ⟨V, hV, hVU⟩
-    filter_upwards [hV] using fun x hx i => hVU x₀ (mem_of_mem_nhds hV) x hx i
+    filter_upwards [hV] using fun x hx i => hVU x₀ (mem_of_mem_nhdsWithin hx₀ hV) x hx i
+
+/-- Reformulation of equicontinuity at `x₀` comparing two variables near `x₀` instead of comparing
+only one with `x₀`. -/
+theorem equicontinuousAt_iff_pair {F : ι → X → α} {x₀ : X} :
+    EquicontinuousAt F x₀ ↔
+      ∀ U ∈ 𝓤 α, ∃ V ∈ 𝓝 x₀, ∀ x ∈ V, ∀ y ∈ V, ∀ i, (F i x, F i y) ∈ U := by
+  simp_rw [← equicontinuousWithinAt_univ, equicontinuousWithinAt_iff_pair (mem_univ x₀),
+    nhdsWithin_univ]
 #align equicontinuous_at_iff_pair equicontinuousAt_iff_pair
 
 /-- Uniform equicontinuity implies equicontinuity. -/
 theorem UniformEquicontinuous.equicontinuous {F : ι → β → α} (h : UniformEquicontinuous F) :
-    Equicontinuous F := fun x₀ U hU =>
-  mem_of_superset (ball_mem_nhds x₀ (h U hU)) fun _ hx i => hx i
+    Equicontinuous F := fun x₀ U hU ↦
+  mem_of_superset (ball_mem_nhds x₀ (h U hU)) fun _ hx i ↦ hx i
 #align uniform_equicontinuous.equicontinuous UniformEquicontinuous.equicontinuous
 
+/-- Uniform equicontinuity on a subset implies equicontinuity on that subset. -/
+theorem UniformEquicontinuousOn.equicontinuousOn {F : ι → β → α} {S : Set β}
+    (h : UniformEquicontinuousOn F S) :
+    EquicontinuousOn F S := fun _ hx₀ U hU ↦
+  mem_of_superset (ball_mem_nhdsWithin hx₀ (h U hU)) fun _ hx i ↦ hx i
+
 /-- Each function of a family equicontinuous at `x₀` is continuous at `x₀`. -/
 theorem EquicontinuousAt.continuousAt {F : ι → X → α} {x₀ : X} (h : EquicontinuousAt F x₀) (i : ι) :
     ContinuousAt (F i) x₀ :=
   (UniformSpace.hasBasis_nhds _).tendsto_right_iff.2 fun U ⟨hU, _⟩ ↦ (h U hU).mono fun _x hx ↦ hx i
 #align equicontinuous_at.continuous_at EquicontinuousAt.continuousAt
 
+/-- Each function of a family equicontinuous at `x₀` within `S` is continuous at `x₀` within `S`. -/
+theorem EquicontinuousWithinAt.continuousWithinAt {F : ι → X → α} {S : Set X} {x₀ : X}
+    (h : EquicontinuousWithinAt F S x₀) (i : ι) :
+    ContinuousWithinAt (F i) S x₀ :=
+  (UniformSpace.hasBasis_nhds _).tendsto_right_iff.2 fun U ⟨hU, _⟩ ↦ (h U hU).mono fun _x hx ↦ hx i
+
 protected theorem Set.EquicontinuousAt.continuousAt_of_mem {H : Set <| X → α} {x₀ : X}
     (h : H.EquicontinuousAt x₀) {f : X → α} (hf : f ∈ H) : ContinuousAt f x₀ :=
   h.continuousAt ⟨f, hf⟩
 #align set.equicontinuous_at.continuous_at_of_mem Set.EquicontinuousAt.continuousAt_of_mem
 
+protected theorem Set.EquicontinuousWithinAt.continuousWithinAt_of_mem {H : Set <| X → α}
+    {S : Set X} {x₀ : X} (h : H.EquicontinuousWithinAt S x₀) {f : X → α} (hf : f ∈ H) :
+    ContinuousWithinAt f S x₀ :=
+  h.continuousWithinAt ⟨f, hf⟩
+
 /-- Each function of an equicontinuous family is continuous. -/
 theorem Equicontinuous.continuous {F : ι → X → α} (h : Equicontinuous F) (i : ι) :
     Continuous (F i) :=
   continuous_iff_continuousAt.mpr fun x => (h x).continuousAt i
 #align equicontinuous.continuous Equicontinuous.continuous
 
+/-- Each function of a family equicontinuous on `S` is continuous on `S`. -/
+theorem EquicontinuousOn.continuousOn {F : ι → X → α} {S : Set X} (h : EquicontinuousOn F S)
+    (i : ι) : ContinuousOn (F i) S :=
+  fun x hx ↦ (h x hx).continuousWithinAt i
+
 protected theorem Set.Equicontinuous.continuous_of_mem {H : Set <| X → α} (h : H.Equicontinuous)
     {f : X → α} (hf : f ∈ H) : Continuous f :=
   h.continuous ⟨f, hf⟩
 #align set.equicontinuous.continuous_of_mem Set.Equicontinuous.continuous_of_mem
 
+protected theorem Set.EquicontinuousOn.continuousOn_of_mem {H : Set <| X → α} {S : Set X}
+    (h : H.EquicontinuousOn S) {f : X → α} (hf : f ∈ H) : ContinuousOn f S :=
+  h.continuousOn ⟨f, hf⟩
+
 /-- Each function of a uniformly equicontinuous family is uniformly continuous. -/
 theorem UniformEquicontinuous.uniformContinuous {F : ι → β → α} (h : UniformEquicontinuous F)
     (i : ι) : UniformContinuous (F i) := fun U hU =>
   mem_map.mpr (mem_of_superset (h U hU) fun _ hxy => hxy i)
 #align uniform_equicontinuous.uniform_continuous UniformEquicontinuous.uniformContinuous
 
+/-- Each function of a family uniformly equicontinuous on `S` is uniformly continuous on `S`. -/
+theorem UniformEquicontinuousOn.uniformContinuousOn {F : ι → β → α} {S : Set β}
+    (h : UniformEquicontinuousOn F S) (i : ι) :
+    UniformContinuousOn (F i) S := fun U hU =>
+  mem_map.mpr (mem_of_superset (h U hU) fun _ hxy => hxy i)
+
 protected theorem Set.UniformEquicontinuous.uniformContinuous_of_mem {H : Set <| β → α}
     (h : H.UniformEquicontinuous) {f : β → α} (hf : f ∈ H) : UniformContinuous f :=
   h.uniformContinuous ⟨f, hf⟩
 #align set.uniform_equicontinuous.uniform_continuous_of_mem Set.UniformEquicontinuous.uniformContinuous_of_mem
 
+protected theorem Set.UniformEquicontinuousOn.uniformContinuousOn_of_mem {H : Set <| β → α}
+    {S : Set β} (h : H.UniformEquicontinuousOn S) {f : β → α} (hf : f ∈ H) :
+    UniformContinuousOn f S :=
+  h.uniformContinuousOn ⟨f, hf⟩
+
 /-- Taking sub-families preserves equicontinuity at a point. -/
 theorem EquicontinuousAt.comp {F : ι → X → α} {x₀ : X} (h : EquicontinuousAt F x₀) (u : κ → ι) :
     EquicontinuousAt (F ∘ u) x₀ := fun U hU => (h U hU).mono fun _ H k => H (u k)
 #align equicontinuous_at.comp EquicontinuousAt.comp
 
+/-- Taking sub-families preserves equicontinuity at a point within a subset. -/
+theorem EquicontinuousWithinAt.comp {F : ι → X → α} {S : Set X} {x₀ : X}
+    (h : EquicontinuousWithinAt F S x₀) (u : κ → ι) :
+    EquicontinuousWithinAt (F ∘ u) S x₀ :=
+  fun U hU ↦ (h U hU).mono fun _ H k => H (u k)
+
 protected theorem Set.EquicontinuousAt.mono {H H' : Set <| X → α} {x₀ : X}
     (h : H.EquicontinuousAt x₀) (hH : H' ⊆ H) : H'.EquicontinuousAt x₀ :=
   h.comp (inclusion hH)
 #align set.equicontinuous_at.mono Set.EquicontinuousAt.mono
 
+protected theorem Set.EquicontinuousWithinAt.mono {H H' : Set <| X → α} {S : Set X} {x₀ : X}
+    (h : H.EquicontinuousWithinAt S x₀) (hH : H' ⊆ H) : H'.EquicontinuousWithinAt S x₀ :=
+  h.comp (inclusion hH)
+
 /-- Taking sub-families preserves equicontinuity. -/
 theorem Equicontinuous.comp {F : ι → X → α} (h : Equicontinuous F) (u : κ → ι) :
     Equicontinuous (F ∘ u) := fun x => (h x).comp u
 #align equicontinuous.comp Equicontinuous.comp
 
+/-- Taking sub-families preserves equicontinuity on a subset. -/
+theorem EquicontinuousOn.comp {F : ι → X → α} {S : Set X} (h : EquicontinuousOn F S) (u : κ → ι) :
+    EquicontinuousOn (F ∘ u) S := fun x hx ↦ (h x hx).comp u
+
 protected theorem Set.Equicontinuous.mono {H H' : Set <| X → α} (h : H.Equicontinuous)
     (hH : H' ⊆ H) : H'.Equicontinuous :=
   h.comp (inclusion hH)
 #align set.equicontinuous.mono Set.Equicontinuous.mono
 
+protected theorem Set.EquicontinuousOn.mono {H H' : Set <| X → α} {S : Set X}
+    (h : H.EquicontinuousOn S) (hH : H' ⊆ H) : H'.EquicontinuousOn S :=
+  h.comp (inclusion hH)
+
 /-- Taking sub-families preserves uniform equicontinuity. -/
 theorem UniformEquicontinuous.comp {F : ι → β → α} (h : UniformEquicontinuous F) (u : κ → ι) :
     UniformEquicontinuous (F ∘ u) := fun U hU => (h U hU).mono fun _ H k => H (u k)
 #align uniform_equicontinuous.comp UniformEquicontinuous.comp
 
+/-- Taking sub-families preserves uniform equicontinuity on a subset. -/
+theorem UniformEquicontinuousOn.comp {F : ι → β → α} {S : Set β} (h : UniformEquicontinuousOn F S)
+    (u : κ → ι) : UniformEquicontinuousOn (F ∘ u) S :=
+  fun U hU ↦ (h U hU).mono fun _ H k => H (u k)
+
 protected theorem Set.UniformEquicontinuous.mono {H H' : Set <| β → α} (h : H.UniformEquicontinuous)
     (hH : H' ⊆ H) : H'.UniformEquicontinuous :=
   h.comp (inclusion hH)
 #align set.uniform_equicontinuous.mono Set.UniformEquicontinuous.mono
 
+protected theorem Set.UniformEquicontinuousOn.mono {H H' : Set <| β → α} {S : Set β}
+    (h : H.UniformEquicontinuousOn S) (hH : H' ⊆ H) : H'.UniformEquicontinuousOn S :=
+  h.comp (inclusion hH)
+
 /-- A family `𝓕 : ι → X → α` is equicontinuous at `x₀` iff `range 𝓕` is equicontinuous at `x₀`,
 i.e the family `(↑) : range F → X → α` is equicontinuous at `x₀`. -/
 theorem equicontinuousAt_iff_range {F : ι → X → α} {x₀ : X} :
@@ -267,6 +463,12 @@ theorem equicontinuousAt_iff_range {F : ι → X → α} {x₀ : X} :
   simp only [EquicontinuousAt, forall_subtype_range_iff]
 #align equicontinuous_at_iff_range equicontinuousAt_iff_range
 
+/-- A family `𝓕 : ι → X → α` is equicontinuous at `x₀` within `S` iff `range 𝓕` is equicontinuous
+at `x₀` within `S`, i.e the family `(↑) : range F → X → α` is equicontinuous at `x₀` within `S`. -/
+theorem equicontinuousWithinAt_iff_range {F : ι → X → α} {S : Set X} {x₀ : X} :
+    EquicontinuousWithinAt F S x₀ ↔ EquicontinuousWithinAt ((↑) : range F → X → α) S x₀ := by
+  simp only [EquicontinuousWithinAt, forall_subtype_range_iff]
+
 /-- A family `𝓕 : ι → X → α` is equicontinuous iff `range 𝓕` is equicontinuous,
 i.e the family `(↑) : range F → X → α` is equicontinuous. -/
 theorem equicontinuous_iff_range {F : ι → X → α} :
@@ -274,13 +476,26 @@ theorem equicontinuous_iff_range {F : ι → X → α} :
   forall_congr' fun _ => equicontinuousAt_iff_range
 #align equicontinuous_iff_range equicontinuous_iff_range
 
+/-- A family `𝓕 : ι → X → α` is equicontinuous on `S` iff `range 𝓕` is equicontinuous on `S`,
+i.e the family `(↑) : range F → X → α` is equicontinuous on `S`. -/
+theorem equicontinuousOn_iff_range {F : ι → X → α} {S : Set X} :
+    EquicontinuousOn F S ↔ EquicontinuousOn ((↑) : range F → X → α) S :=
+  forall_congr' fun _ ↦ forall_congr' fun _ ↦ equicontinuousWithinAt_iff_range
+
 /-- A family `𝓕 : ι → β → α` is uniformly equicontinuous iff `range 𝓕` is uniformly equicontinuous,
 i.e the family `(↑) : range F → β → α` is uniformly equicontinuous. -/
-theorem uniformEquicontinuous_at_iff_range {F : ι → β → α} :
+theorem uniformEquicontinuous_iff_range {F : ι → β → α} :
     UniformEquicontinuous F ↔ UniformEquicontinuous ((↑) : range F → β → α) :=
   ⟨fun h => by rw [← comp_rangeSplitting F]; exact h.comp _, fun h =>
     h.comp (rangeFactorization F)⟩
-#align uniform_equicontinuous_at_iff_range uniformEquicontinuous_at_iff_range
+#align uniform_equicontinuous_at_iff_range uniformEquicontinuous_iff_range
+
+/-- A family `𝓕 : ι → β → α` is uniformly equicontinuous on `S` iff `range 𝓕` is uniformly
+equicontinuous on `S`, i.e the family `(↑) : range F → β → α` is uniformly equicontinuous on `S`. -/
+theorem uniformEquicontinuousOn_iff_range {F : ι → β → α} {S : Set β} :
+    UniformEquicontinuousOn F S ↔ UniformEquicontinuousOn ((↑) : range F → β → α) S :=
+  ⟨fun h => by rw [← comp_rangeSplitting F]; exact h.comp _, fun h =>
+    h.comp (rangeFactorization F)⟩
 
 section
 
@@ -296,6 +511,16 @@ theorem equicontinuousAt_iff_continuousAt {F : ι → X → α} {x₀ : X} :
   rfl
 #align equicontinuous_at_iff_continuous_at equicontinuousAt_iff_continuousAt
 
+/-- A family `𝓕 : ι → X → α` is equicontinuous at `x₀` within `S` iff the function
+`swap 𝓕 : X → ι → α` is continuous at `x₀` within `S`
+*when `ι → α` is equipped with the topology of uniform convergence*. This is very useful for
+developping the equicontinuity API, but it should not be used directly for other purposes. -/
+theorem equicontinuousWithinAt_iff_continuousWithinAt {F : ι → X → α} {S : Set X} {x₀ : X} :
+    EquicontinuousWithinAt F S x₀ ↔
+    ContinuousWithinAt (ofFun ∘ Function.swap F : X → ι →ᵤ α) S x₀ := by
+  rw [ContinuousWithinAt, (UniformFun.hasBasis_nhds ι α _).tendsto_right_iff]
+  rfl
+
 /-- A family `𝓕 : ι → X → α` is equicontinuous iff the function `swap 𝓕 : X → ι → α` is
 continuous *when `ι → α` is equipped with the topology of uniform convergence*. This is
 very useful for developping the equicontinuity API, but it should not be used directly for other
@@ -305,6 +530,14 @@ theorem equicontinuous_iff_continuous {F : ι → X → α} :
   simp_rw [Equicontinuous, continuous_iff_continuousAt, equicontinuousAt_iff_continuousAt]
 #align equicontinuous_iff_continuous equicontinuous_iff_continuous
 
+/-- A family `𝓕 : ι → X → α` is equicontinuous on `S` iff the function `swap 𝓕 : X → ι → α` is
+continuous on `S` *when `ι → α` is equipped with the topology of uniform convergence*. This is
+very useful for developping the equicontinuity API, but it should not be used directly for other
+purposes. -/
+theorem equicontinuousOn_iff_continuousOn {F : ι → X → α} {S : Set X} :
+    EquicontinuousOn F S ↔ ContinuousOn (ofFun ∘ Function.swap F : X → ι →ᵤ α) S := by
+  simp_rw [EquicontinuousOn, ContinuousOn, equicontinuousWithinAt_iff_continuousWithinAt]
+
 /-- A family `𝓕 : ι → β → α` is uniformly equicontinuous iff the function `swap 𝓕 : β → ι → α` is
 uniformly continuous *when `ι → α` is equipped with the uniform structure of uniform convergence*.
 This is very useful for developping the equicontinuity API, but it should not be used directly
@@ -315,54 +548,103 @@ theorem uniformEquicontinuous_iff_uniformContinuous {F : ι → β → α} :
   rfl
 #align uniform_equicontinuous_iff_uniform_continuous uniformEquicontinuous_iff_uniformContinuous
 
-theorem equicontinuousAt_iInf_rng {α' : Type*} {u : κ → UniformSpace α'} {F : ι → X → α'}
-    {x₀ : X} :
-    @EquicontinuousAt _ _ _ _ (⨅ k, u k) F x₀ ↔ ∀ k, @EquicontinuousAt _ _ _ _ (u k) F x₀ := by
-  simp only [@equicontinuousAt_iff_continuousAt _ _ _ _ _, topologicalSpace]
-  unfold ContinuousAt
+/-- A family `𝓕 : ι → β → α` is uniformly equicontinuous on `S` iff the function
+`swap 𝓕 : β → ι → α` is uniformly continuous on `S`
+*when `ι → α` is equipped with the uniform structure of uniform convergence*. This is very useful
+for developping the equicontinuity API, but it should not be used directly for other purposes. -/
+theorem uniformEquicontinuousOn_iff_uniformContinuousOn {F : ι → β → α} {S : Set β} :
+    UniformEquicontinuousOn F S ↔ UniformContinuousOn (ofFun ∘ Function.swap F : β → ι →ᵤ α) S := by
+  rw [UniformContinuousOn, (UniformFun.hasBasis_uniformity ι α).tendsto_right_iff]
+  rfl
+
+theorem equicontinuousWithinAt_iInf_rng {u : κ → UniformSpace α'} {F : ι → X → α'}
+    {S : Set X} {x₀ : X} : EquicontinuousWithinAt (uα :=  ⨅ k, u k) F S x₀ ↔
+      ∀ k, EquicontinuousWithinAt (uα :=  u k) F S x₀ := by
+  simp only [equicontinuousWithinAt_iff_continuousWithinAt (uα := _), topologicalSpace]
+  unfold ContinuousWithinAt
   rw [UniformFun.iInf_eq, toTopologicalSpace_iInf, nhds_iInf, tendsto_iInf]
 
-theorem equicontinuous_iInf_rng {α' : Type*} {u : κ → UniformSpace α'} {F : ι → X → α'} :
-    @Equicontinuous _ _ _ _ (⨅ k, u k) F ↔ ∀ k, @Equicontinuous _ _ _ _ (u k) F := by
-  simp_rw [@equicontinuous_iff_continuous _ _ _ _ _, UniformFun.topologicalSpace]
+theorem equicontinuousAt_iInf_rng {u : κ → UniformSpace α'} {F : ι → X → α'}
+    {x₀ : X} :
+    EquicontinuousAt (uα := ⨅ k, u k) F x₀ ↔ ∀ k, EquicontinuousAt (uα := u k) F x₀ := by
+  simp only [← equicontinuousWithinAt_univ (uα := _), equicontinuousWithinAt_iInf_rng]
+
+theorem equicontinuous_iInf_rng {u : κ → UniformSpace α'} {F : ι → X → α'} :
+    Equicontinuous (uα := ⨅ k, u k) F ↔ ∀ k, Equicontinuous (uα := u k) F := by
+  simp_rw [equicontinuous_iff_continuous (uα := _), UniformFun.topologicalSpace]
   rw [UniformFun.iInf_eq, toTopologicalSpace_iInf, continuous_iInf_rng]
 
-theorem uniformEquicontinuous_iInf_rng {α' : Type*} {u : κ → UniformSpace α'} {F : ι → β → α'} :
-    @UniformEquicontinuous _ _ _ (⨅ k, u k) _ F ↔ ∀ k, @UniformEquicontinuous _ _ _ (u k) _ F := by
-  simp_rw [@uniformEquicontinuous_iff_uniformContinuous _ _ _ _]
+theorem equicontinuousOn_iInf_rng {u : κ → UniformSpace α'} {F : ι → X → α'}
+    {S : Set X} :
+    EquicontinuousOn (uα := ⨅ k, u k) F S ↔ ∀ k, EquicontinuousOn (uα := u k) F S := by
+  simp_rw [EquicontinuousOn, equicontinuousWithinAt_iInf_rng, @forall_swap _ κ]
+
+theorem uniformEquicontinuous_iInf_rng {u : κ → UniformSpace α'} {F : ι → β → α'} :
+    UniformEquicontinuous (uα := ⨅ k, u k) F ↔ ∀ k, UniformEquicontinuous (uα := u k) F := by
+  simp_rw [uniformEquicontinuous_iff_uniformContinuous (uα := _)]
   rw [UniformFun.iInf_eq, uniformContinuous_iInf_rng]
 
-theorem equicontinuousAt_iInf_dom {X' : Type*} {t : κ → TopologicalSpace X'} {F : ι → X' → α}
-    {x₀ : X'} {k : κ} (hk : @EquicontinuousAt _ _ _ (t k) _ F x₀) :
-    @EquicontinuousAt _ _ _ (⨅ k, t k) _ F x₀ := by
-  simp? [@equicontinuousAt_iff_continuousAt _ _ _ _] at hk ⊢ says
-    simp only [@equicontinuousAt_iff_continuousAt _ _ _ _] at hk ⊢
-  unfold ContinuousAt at hk ⊢
+theorem uniformEquicontinuousOn_iInf_rng {u : κ → UniformSpace α'} {F : ι → β → α'}
+    {S : Set β} : UniformEquicontinuousOn (uα := ⨅ k, u k) F S ↔
+      ∀ k, UniformEquicontinuousOn (uα := u k) F S := by
+  simp_rw [uniformEquicontinuousOn_iff_uniformContinuousOn (uα := _)]
+  unfold UniformContinuousOn
+  rw [UniformFun.iInf_eq, iInf_uniformity, tendsto_iInf]
+
+theorem equicontinuousWithinAt_iInf_dom {t : κ → TopologicalSpace X'} {F : ι → X' → α}
+    {S : Set X'} {x₀ : X'} {k : κ} (hk : EquicontinuousWithinAt (tX := t k) F S x₀) :
+    EquicontinuousWithinAt (tX := ⨅ k, t k) F S x₀ := by
+  simp [equicontinuousWithinAt_iff_continuousWithinAt (tX := _)] at hk ⊢
+  unfold ContinuousWithinAt nhdsWithin at hk ⊢
   rw [nhds_iInf]
-  exact tendsto_iInf' k hk
-
-theorem equicontinuous_iInf_dom {X' : Type*} {t : κ → TopologicalSpace X'} {F : ι → X' → α}
-    {k : κ} (hk : @Equicontinuous _ _ _ (t k) _ F) :
-    @Equicontinuous _ _ _ (⨅ k, t k) _ F := by
-  simp_rw [@equicontinuous_iff_continuous _ _ _ _] at hk ⊢
-  exact continuous_iInf_dom hk
-
-theorem uniform_equicontinuous_infi_dom {β' : Type*} {u : κ → UniformSpace β'} {F : ι → β' → α}
-    {k : κ} (hk : @UniformEquicontinuous _ _ _ _ (u k) F) :
-    @UniformEquicontinuous _ _ _ _ (⨅ k, u k) F := by
-  simp_rw [@uniformEquicontinuous_iff_uniformContinuous _ _ _ _ _] at hk ⊢
+  exact hk.mono_left <| inf_le_inf_right _ <| iInf_le _ k
+
+theorem equicontinuousAt_iInf_dom {t : κ → TopologicalSpace X'} {F : ι → X' → α}
+    {x₀ : X'} {k : κ} (hk : EquicontinuousAt (tX := t k) F x₀) :
+    EquicontinuousAt (tX := ⨅ k, t k) F x₀ := by
+  rw [← equicontinuousWithinAt_univ (tX := _)] at hk ⊢
+  exact equicontinuousWithinAt_iInf_dom hk
+
+theorem equicontinuous_iInf_dom {t : κ → TopologicalSpace X'} {F : ι → X' → α}
+    {k : κ} (hk : Equicontinuous (tX := t k) F) :
+    Equicontinuous (tX := ⨅ k, t k) F :=
+  fun x ↦ equicontinuousAt_iInf_dom (hk x)
+
+theorem equicontinuousOn_iInf_dom {t : κ → TopologicalSpace X'} {F : ι → X' → α}
+    {S : Set X'} {k : κ} (hk : EquicontinuousOn (tX := t k) F S) :
+    EquicontinuousOn (tX := ⨅ k, t k) F S :=
+  fun x hx ↦ equicontinuousWithinAt_iInf_dom (hk x hx)
+
+theorem uniformEquicontinuous_iInf_dom {u : κ → UniformSpace β'} {F : ι → β' → α}
+    {k : κ} (hk : UniformEquicontinuous (uβ := u k) F) :
+    UniformEquicontinuous (uβ := ⨅ k, u k) F := by
+  simp_rw [uniformEquicontinuous_iff_uniformContinuous (uβ := _)] at hk ⊢
   exact uniformContinuous_iInf_dom hk
 
-theorem Filter.HasBasis.equicontinuousAt_iff_left {κ : Type*} {p : κ → Prop} {s : κ → Set X}
+theorem uniformEquicontinuousOn_iInf_dom {u : κ → UniformSpace β'} {F : ι → β' → α}
+    {S : Set β'} {k : κ} (hk : UniformEquicontinuousOn (uβ := u k) F S) :
+    UniformEquicontinuousOn (uβ := ⨅ k, u k) F S := by
+  simp_rw [uniformEquicontinuousOn_iff_uniformContinuousOn (uβ := _)] at hk ⊢
+  unfold UniformContinuousOn
+  rw [iInf_uniformity]
+  exact hk.mono_left <| inf_le_inf_right _ <| iInf_le _ k
+
+theorem Filter.HasBasis.equicontinuousAt_iff_left {p : κ → Prop} {s : κ → Set X}
     {F : ι → X → α} {x₀ : X} (hX : (𝓝 x₀).HasBasis p s) :
     EquicontinuousAt F x₀ ↔ ∀ U ∈ 𝓤 α, ∃ k, p k ∧ ∀ x ∈ s k, ∀ i, (F i x₀, F i x) ∈ U := by
   rw [equicontinuousAt_iff_continuousAt, ContinuousAt,
     hX.tendsto_iff (UniformFun.hasBasis_nhds ι α _)]
-  simp only [Function.comp_apply, mem_setOf_eq, exists_prop]
   rfl
 #align filter.has_basis.equicontinuous_at_iff_left Filter.HasBasis.equicontinuousAt_iff_left
 
-theorem Filter.HasBasis.equicontinuousAt_iff_right {κ : Type*} {p : κ → Prop} {s : κ → Set (α × α)}
+theorem Filter.HasBasis.equicontinuousWithinAt_iff_left {p : κ → Prop} {s : κ → Set X}
+    {F : ι → X → α} {S : Set X} {x₀ : X} (hX : (𝓝[S] x₀).HasBasis p s) :
+    EquicontinuousWithinAt F S x₀ ↔ ∀ U ∈ 𝓤 α, ∃ k, p k ∧ ∀ x ∈ s k, ∀ i, (F i x₀, F i x) ∈ U := by
+  rw [equicontinuousWithinAt_iff_continuousWithinAt, ContinuousWithinAt,
+    hX.tendsto_iff (UniformFun.hasBasis_nhds ι α _)]
+  rfl
+
+theorem Filter.HasBasis.equicontinuousAt_iff_right {p : κ → Prop} {s : κ → Set (α × α)}
     {F : ι → X → α} {x₀ : X} (hα : (𝓤 α).HasBasis p s) :
     EquicontinuousAt F x₀ ↔ ∀ k, p k → ∀ᶠ x in 𝓝 x₀, ∀ i, (F i x₀, F i x) ∈ s k := by
   rw [equicontinuousAt_iff_continuousAt, ContinuousAt,
@@ -370,6 +652,13 @@ theorem Filter.HasBasis.equicontinuousAt_iff_right {κ : Type*} {p : κ → Prop
   rfl
 #align filter.has_basis.equicontinuous_at_iff_right Filter.HasBasis.equicontinuousAt_iff_right
 
+theorem Filter.HasBasis.equicontinuousWithinAt_iff_right {p : κ → Prop}
+    {s : κ → Set (α × α)} {F : ι → X → α} {S : Set X} {x₀ : X} (hα : (𝓤 α).HasBasis p s) :
+    EquicontinuousWithinAt F S x₀ ↔ ∀ k, p k → ∀ᶠ x in 𝓝[S] x₀, ∀ i, (F i x₀, F i x) ∈ s k := by
+  rw [equicontinuousWithinAt_iff_continuousWithinAt, ContinuousWithinAt,
+    (UniformFun.hasBasis_nhds_of_basis ι α _ hα).tendsto_right_iff]
+  rfl
+
 theorem Filter.HasBasis.equicontinuousAt_iff {κ₁ κ₂ : Type*} {p₁ : κ₁ → Prop} {s₁ : κ₁ → Set X}
     {p₂ : κ₂ → Prop} {s₂ : κ₂ → Set (α × α)} {F : ι → X → α} {x₀ : X} (hX : (𝓝 x₀).HasBasis p₁ s₁)
     (hα : (𝓤 α).HasBasis p₂ s₂) :
@@ -377,21 +666,38 @@ theorem Filter.HasBasis.equicontinuousAt_iff {κ₁ κ₂ : Type*} {p₁ : κ₁
       ∀ k₂, p₂ k₂ → ∃ k₁, p₁ k₁ ∧ ∀ x ∈ s₁ k₁, ∀ i, (F i x₀, F i x) ∈ s₂ k₂ := by
   rw [equicontinuousAt_iff_continuousAt, ContinuousAt,
     hX.tendsto_iff (UniformFun.hasBasis_nhds_of_basis ι α _ hα)]
-  simp only [Function.comp_apply, mem_setOf_eq, exists_prop]
   rfl
 #align filter.has_basis.equicontinuous_at_iff Filter.HasBasis.equicontinuousAt_iff
 
-theorem Filter.HasBasis.uniformEquicontinuous_iff_left {κ : Type*} {p : κ → Prop}
+theorem Filter.HasBasis.equicontinuousWithinAt_iff {κ₁ κ₂ : Type*} {p₁ : κ₁ → Prop}
+    {s₁ : κ₁ → Set X} {p₂ : κ₂ → Prop} {s₂ : κ₂ → Set (α × α)} {F : ι → X → α} {S : Set X} {x₀ : X}
+    (hX : (𝓝[S] x₀).HasBasis p₁ s₁) (hα : (𝓤 α).HasBasis p₂ s₂) :
+    EquicontinuousWithinAt F S x₀ ↔
+      ∀ k₂, p₂ k₂ → ∃ k₁, p₁ k₁ ∧ ∀ x ∈ s₁ k₁, ∀ i, (F i x₀, F i x) ∈ s₂ k₂ := by
+  rw [equicontinuousWithinAt_iff_continuousWithinAt, ContinuousWithinAt,
+    hX.tendsto_iff (UniformFun.hasBasis_nhds_of_basis ι α _ hα)]
+  rfl
+
+theorem Filter.HasBasis.uniformEquicontinuous_iff_left {p : κ → Prop}
     {s : κ → Set (β × β)} {F : ι → β → α} (hβ : (𝓤 β).HasBasis p s) :
     UniformEquicontinuous F ↔
       ∀ U ∈ 𝓤 α, ∃ k, p k ∧ ∀ x y, (x, y) ∈ s k → ∀ i, (F i x, F i y) ∈ U := by
   rw [uniformEquicontinuous_iff_uniformContinuous, UniformContinuous,
     hβ.tendsto_iff (UniformFun.hasBasis_uniformity ι α)]
-  simp only [Prod.forall, Function.comp_apply, mem_setOf_eq, exists_prop]
+  simp only [Prod.forall]
   rfl
 #align filter.has_basis.uniform_equicontinuous_iff_left Filter.HasBasis.uniformEquicontinuous_iff_left
 
-theorem Filter.HasBasis.uniformEquicontinuous_iff_right {κ : Type*} {p : κ → Prop}
+theorem Filter.HasBasis.uniformEquicontinuousOn_iff_left {p : κ → Prop}
+    {s : κ → Set (β × β)} {F : ι → β → α} {S : Set β} (hβ : (𝓤 β ⊓ 𝓟 (S ×ˢ S)).HasBasis p s) :
+    UniformEquicontinuousOn F S ↔
+      ∀ U ∈ 𝓤 α, ∃ k, p k ∧ ∀ x y, (x, y) ∈ s k → ∀ i, (F i x, F i y) ∈ U := by
+  rw [uniformEquicontinuousOn_iff_uniformContinuousOn, UniformContinuousOn,
+    hβ.tendsto_iff (UniformFun.hasBasis_uniformity ι α)]
+  simp only [Prod.forall]
+  rfl
+
+theorem Filter.HasBasis.uniformEquicontinuous_iff_right {p : κ → Prop}
     {s : κ → Set (α × α)} {F : ι → β → α} (hα : (𝓤 α).HasBasis p s) :
     UniformEquicontinuous F ↔ ∀ k, p k → ∀ᶠ xy : β × β in 𝓤 β, ∀ i, (F i xy.1, F i xy.2) ∈ s k := by
   rw [uniformEquicontinuous_iff_uniformContinuous, UniformContinuous,
@@ -399,6 +705,14 @@ theorem Filter.HasBasis.uniformEquicontinuous_iff_right {κ : Type*} {p : κ →
   rfl
 #align filter.has_basis.uniform_equicontinuous_iff_right Filter.HasBasis.uniformEquicontinuous_iff_right
 
+theorem Filter.HasBasis.uniformEquicontinuousOn_iff_right {p : κ → Prop}
+    {s : κ → Set (α × α)} {F : ι → β → α} {S : Set β} (hα : (𝓤 α).HasBasis p s) :
+    UniformEquicontinuousOn F S ↔
+      ∀ k, p k → ∀ᶠ xy : β × β in 𝓤 β ⊓ 𝓟 (S ×ˢ S), ∀ i, (F i xy.1, F i xy.2) ∈ s k := by
+  rw [uniformEquicontinuousOn_iff_uniformContinuousOn, UniformContinuousOn,
+    (UniformFun.hasBasis_uniformity_of_basis ι α hα).tendsto_right_iff]
+  rfl
+
 theorem Filter.HasBasis.uniformEquicontinuous_iff {κ₁ κ₂ : Type*} {p₁ : κ₁ → Prop}
     {s₁ : κ₁ → Set (β × β)} {p₂ : κ₂ → Prop} {s₂ : κ₂ → Set (α × α)} {F : ι → β → α}
     (hβ : (𝓤 β).HasBasis p₁ s₁) (hα : (𝓤 α).HasBasis p₂ s₂) :
@@ -406,12 +720,22 @@ theorem Filter.HasBasis.uniformEquicontinuous_iff {κ₁ κ₂ : Type*} {p₁ :
       ∀ k₂, p₂ k₂ → ∃ k₁, p₁ k₁ ∧ ∀ x y, (x, y) ∈ s₁ k₁ → ∀ i, (F i x, F i y) ∈ s₂ k₂ := by
   rw [uniformEquicontinuous_iff_uniformContinuous, UniformContinuous,
     hβ.tendsto_iff (UniformFun.hasBasis_uniformity_of_basis ι α hα)]
-  simp only [Prod.forall, Function.comp_apply, mem_setOf_eq, exists_prop]
+  simp only [Prod.forall]
   rfl
 #align filter.has_basis.uniform_equicontinuous_iff Filter.HasBasis.uniformEquicontinuous_iff
 
+theorem Filter.HasBasis.uniformEquicontinuousOn_iff {κ₁ κ₂ : Type*} {p₁ : κ₁ → Prop}
+    {s₁ : κ₁ → Set (β × β)} {p₂ : κ₂ → Prop} {s₂ : κ₂ → Set (α × α)} {F : ι → β → α}
+    {S : Set β} (hβ : (𝓤 β ⊓ 𝓟 (S ×ˢ S)).HasBasis p₁ s₁) (hα : (𝓤 α).HasBasis p₂ s₂) :
+    UniformEquicontinuousOn F S ↔
+      ∀ k₂, p₂ k₂ → ∃ k₁, p₁ k₁ ∧ ∀ x y, (x, y) ∈ s₁ k₁ → ∀ i, (F i x, F i y) ∈ s₂ k₂ := by
+  rw [uniformEquicontinuousOn_iff_uniformContinuousOn, UniformContinuousOn,
+    hβ.tendsto_iff (UniformFun.hasBasis_uniformity_of_basis ι α hα)]
+  simp only [Prod.forall]
+  rfl
+
 /-- Given `u : α → β` a uniform inducing map, a family `𝓕 : ι → X → α` is equicontinuous at a point
-`x₀ : X` iff the family `𝓕'`, obtained by precomposing each function of `𝓕` by `u`, is
+`x₀ : X` iff the family `𝓕'`, obtained by composing each function of `𝓕` by `u`, is
 equicontinuous at `x₀`. -/
 theorem UniformInducing.equicontinuousAt_iff {F : ι → X → α} {x₀ : X} {u : α → β}
     (hu : UniformInducing u) : EquicontinuousAt F x₀ ↔ EquicontinuousAt ((u ∘ ·) ∘ F) x₀ := by
@@ -420,110 +744,255 @@ theorem UniformInducing.equicontinuousAt_iff {F : ι → X → α} {x₀ : X} {u
   rfl
 #align uniform_inducing.equicontinuous_at_iff UniformInducing.equicontinuousAt_iff
 
+/-- Given `u : α → β` a uniform inducing map, a family `𝓕 : ι → X → α` is equicontinuous at a point
+`x₀ : X` within a subset `S : Set X` iff the family `𝓕'`, obtained by composing each function
+of `𝓕` by `u`, is equicontinuous at `x₀` within `S`. -/
+theorem UniformInducing.equicontinuousWithinAt_iff {F : ι → X → α} {S : Set X} {x₀ : X} {u : α → β}
+    (hu : UniformInducing u) : EquicontinuousWithinAt F S x₀ ↔
+      EquicontinuousWithinAt ((u ∘ ·) ∘ F) S x₀ := by
+  have := (UniformFun.postcomp_uniformInducing (α := ι) hu).inducing
+  simp only [equicontinuousWithinAt_iff_continuousWithinAt, this.continuousWithinAt_iff]
+  rfl
+
 /-- Given `u : α → β` a uniform inducing map, a family `𝓕 : ι → X → α` is equicontinuous iff the
-family `𝓕'`, obtained by precomposing each function of `𝓕` by `u`, is equicontinuous. -/
+family `𝓕'`, obtained by composing each function of `𝓕` by `u`, is equicontinuous. -/
 theorem UniformInducing.equicontinuous_iff {F : ι → X → α} {u : α → β} (hu : UniformInducing u) :
     Equicontinuous F ↔ Equicontinuous ((u ∘ ·) ∘ F) := by
   congrm ∀ x, ?_
   rw [hu.equicontinuousAt_iff]
 #align uniform_inducing.equicontinuous_iff UniformInducing.equicontinuous_iff
 
+/-- Given `u : α → β` a uniform inducing map, a family `𝓕 : ι → X → α` is equicontinuous on a
+subset `S : Set X` iff the family `𝓕'`, obtained by composing each function of `𝓕` by `u`, is
+equicontinuous on `S`. -/
+theorem UniformInducing.equicontinuousOn_iff {F : ι → X → α} {S : Set X} {u : α → β}
+    (hu : UniformInducing u) : EquicontinuousOn F S ↔ EquicontinuousOn ((u ∘ ·) ∘ F) S := by
+  congrm ∀ x ∈ S, ?_
+  rw [hu.equicontinuousWithinAt_iff]
+
 /-- Given `u : α → γ` a uniform inducing map, a family `𝓕 : ι → β → α` is uniformly equicontinuous
-iff the family `𝓕'`, obtained by precomposing each function of `𝓕` by `u`, is uniformly
+iff the family `𝓕'`, obtained by composing each function of `𝓕` by `u`, is uniformly
 equicontinuous. -/
 theorem UniformInducing.uniformEquicontinuous_iff {F : ι → β → α} {u : α → γ}
     (hu : UniformInducing u) : UniformEquicontinuous F ↔ UniformEquicontinuous ((u ∘ ·) ∘ F) := by
   have := UniformFun.postcomp_uniformInducing (α := ι) hu
-  rw [uniformEquicontinuous_iff_uniformContinuous, uniformEquicontinuous_iff_uniformContinuous,
-    this.uniformContinuous_iff]
+  simp only [uniformEquicontinuous_iff_uniformContinuous, this.uniformContinuous_iff]
   rfl
 #align uniform_inducing.uniform_equicontinuous_iff UniformInducing.uniformEquicontinuous_iff
 
-/-- A version of `EquicontinuousAt.closure` applicable to subsets of types which embed continuously
-into `X → α` with the product topology. It turns out we don't need any other condition on the
-embedding than continuity, but in practice this will mostly be applied to `DFunLike` types where
-the coercion is injective. -/
-theorem EquicontinuousAt.closure' {A : Set Y} {u : Y → X → α} {x₀ : X}
-    (hA : EquicontinuousAt (u ∘ (↑) : A → X → α) x₀) (hu : Continuous u) :
-    EquicontinuousAt (u ∘ (↑) : closure A → X → α) x₀ := by
+/-- Given `u : α → γ` a uniform inducing map, a family `𝓕 : ι → β → α` is uniformly equicontinuous
+on a subset `S : Set β` iff the family `𝓕'`, obtained by composing each function of `𝓕` by `u`,
+is uniformly equicontinuous on `S`. -/
+theorem UniformInducing.uniformEquicontinuousOn_iff {F : ι → β → α} {S : Set β} {u : α → γ}
+    (hu : UniformInducing u) :
+    UniformEquicontinuousOn F S ↔ UniformEquicontinuousOn ((u ∘ ·) ∘ F) S := by
+  have := UniformFun.postcomp_uniformInducing (α := ι) hu
+  simp only [uniformEquicontinuousOn_iff_uniformContinuousOn, this.uniformContinuousOn_iff]
+  rfl
+
+/-- If a set of functions is equicontinuous at some `x₀` within a set `S`, the same is true for its
+closure in *any* topology for which evaluation at any `x ∈ S ∪ {x₀}` is continuous. Since
+this will be applied to `DFunLike` types, we state it for any topological space whith a map
+to `X → α` satisfying the right continuity conditions. See also `Set.EquicontinuousWithinAt.closure`
+for a more familiar (but weaker) statement.
+
+Note: This could *technically* be called `EquicontinuousWithinAt.closure` without name clashes
+with `Set.EquicontinuousWithinAt.closure`, but we don't do it because, even with a `protected`
+marker, it would introduce ambiguities while working in namespace `Set` (e.g, in the proof of
+any theorem called `Set.something`). -/
+theorem EquicontinuousWithinAt.closure' {A : Set Y} {u : Y → X → α} {S : Set X} {x₀ : X}
+    (hA : EquicontinuousWithinAt (u ∘ (↑) : A → X → α) S x₀) (hu₁ : Continuous (S.restrict ∘ u))
+    (hu₂ : Continuous (eval x₀ ∘ u)) :
+    EquicontinuousWithinAt (u ∘ (↑) : closure A → X → α) S x₀ := by
   intro U hU
   rcases mem_uniformity_isClosed hU with ⟨V, hV, hVclosed, hVU⟩
-  filter_upwards [hA V hV] with x hx
+  filter_upwards [hA V hV, eventually_mem_nhdsWithin] with x hx hxS
   rw [SetCoe.forall] at *
   change A ⊆ (fun f => (u f x₀, u f x)) ⁻¹' V at hx
-  refine' (closure_minimal hx <| hVclosed.preimage <| _).trans (preimage_mono hVU)
-  exact Continuous.prod_mk ((continuous_apply x₀).comp hu) ((continuous_apply x).comp hu)
+  refine (closure_minimal hx <| hVclosed.preimage <| hu₂.prod_mk ?_).trans (preimage_mono hVU)
+  exact (continuous_apply ⟨x, hxS⟩).comp hu₁
+
+/-- If a set of functions is equicontinuous at some `x₀`, the same is true for its closure in *any*
+topology for which evaluation at any point is continuous. Since this will be applied to
+`DFunLike` types, we state it for any topological space whith a map to `X → α` satisfying the right
+continuity conditions. See also `Set.EquicontinuousAt.closure` for a more familiar statement. -/
+theorem EquicontinuousAt.closure' {A : Set Y} {u : Y → X → α} {x₀ : X}
+    (hA : EquicontinuousAt (u ∘ (↑) : A → X → α) x₀) (hu : Continuous u) :
+    EquicontinuousAt (u ∘ (↑) : closure A → X → α) x₀ := by
+  rw [← equicontinuousWithinAt_univ] at hA ⊢
+  exact hA.closure' (Pi.continuous_restrict _ |>.comp hu) (continuous_apply x₀ |>.comp hu)
 #align equicontinuous_at.closure' EquicontinuousAt.closure'
 
 /-- If a set of functions is equicontinuous at some `x₀`, its closure for the product topology is
 also equicontinuous at `x₀`. -/
-protected theorem EquicontinuousAt.closure {A : Set (X → α)} {x₀ : X} (hA : A.EquicontinuousAt x₀) :
-    (closure A).EquicontinuousAt x₀ :=
-  EquicontinuousAt.closure' (u := id) hA continuous_id
-#align equicontinuous_at.closure EquicontinuousAt.closure
-
-/-- If `𝓕 : ι → X → α` tends to `f : X → α` *pointwise* along some nontrivial filter, and if the
-family `𝓕` is equicontinuous at some `x₀ : X`, then the limit is continuous at `x₀`. -/
-theorem Filter.Tendsto.continuousAt_of_equicontinuousAt {l : Filter ι} [l.NeBot] {F : ι → X → α}
-    {f : X → α} {x₀ : X} (h₁ : Tendsto F l (𝓝 f)) (h₂ : EquicontinuousAt F x₀) :
-    ContinuousAt f x₀ :=
-  (equicontinuousAt_iff_range.mp h₂).closure.continuousAt
-    ⟨f, mem_closure_of_tendsto h₁ <| eventually_of_forall mem_range_self⟩
-#align filter.tendsto.continuous_at_of_equicontinuous_at Filter.Tendsto.continuousAt_of_equicontinuousAt
-
-/-- A version of `Equicontinuous.closure` applicable to subsets of types which embed continuously
-into `X → α` with the product topology. It turns out we don't need any other condition on the
-embedding than continuity, but in practice this will mostly be applied to `DFunLike` types where
-the coercion is injective. -/
+protected theorem Set.EquicontinuousAt.closure {A : Set (X → α)} {x₀ : X}
+    (hA : A.EquicontinuousAt x₀) : (closure A).EquicontinuousAt x₀ :=
+  hA.closure' (u := id) continuous_id
+#align equicontinuous_at.closure Set.EquicontinuousAt.closure
+
+/-- If a set of functions is equicontinuous at some `x₀` within a set `S`, its closure for the
+product topology is also equicontinuous at `x₀` within `S`. This would also be true for the coarser
+topology of pointwise convergence on `S ∪ {x₀}`, see `Set.EquicontinuousWithinAt.closure'`. -/
+protected theorem Set.EquicontinuousWithinAt.closure {A : Set (X → α)} {S : Set X} {x₀ : X}
+    (hA : A.EquicontinuousWithinAt S x₀) :
+    (closure A).EquicontinuousWithinAt S x₀ :=
+  hA.closure' (u := id) (Pi.continuous_restrict _) (continuous_apply _)
+
+/-- If a set of functions is equicontinuous, the same is true for its closure in *any*
+topology for which evaluation at any point is continuous. Since this will be applied to
+`DFunLike` types, we state it for any topological space whith a map to `X → α` satisfying the right
+continuity conditions. See also `Set.Equicontinuous.closure` for a more familiar statement. -/
 theorem Equicontinuous.closure' {A : Set Y} {u : Y → X → α}
     (hA : Equicontinuous (u ∘ (↑) : A → X → α)) (hu : Continuous u) :
-    Equicontinuous (u ∘ (↑) : closure A → X → α) := fun x => (hA x).closure' hu
+    Equicontinuous (u ∘ (↑) : closure A → X → α) := fun x ↦ (hA x).closure' hu
 #align equicontinuous.closure' Equicontinuous.closure'
 
+/-- If a set of functions is equicontinuous on a set `S`, the same is true for its closure in *any*
+topology for which evaluation at any `x ∈ S` is continuous. Since this will be applied to
+`DFunLike` types, we state it for any topological space whith a map to `X → α` satisfying the right
+continuity conditions. See also `Set.EquicontinuousOn.closure` for a more familiar
+(but weaker) statement. -/
+theorem EquicontinuousOn.closure' {A : Set Y} {u : Y → X → α} {S : Set X}
+    (hA : EquicontinuousOn (u ∘ (↑) : A → X → α) S) (hu : Continuous (S.restrict ∘ u)) :
+    EquicontinuousOn (u ∘ (↑) : closure A → X → α) S :=
+  fun x hx ↦ (hA x hx).closure' hu <| by exact continuous_apply ⟨x, hx⟩ |>.comp hu
+
 /-- If a set of functions is equicontinuous, its closure for the product topology is also
 equicontinuous. -/
-theorem Equicontinuous.closure {A : Set <| X → α} (hA : A.Equicontinuous) :
-    (closure A).Equicontinuous := fun x => (hA x).closure
-#align equicontinuous.closure Equicontinuous.closure
+protected theorem Set.Equicontinuous.closure {A : Set <| X → α} (hA : A.Equicontinuous) :
+    (closure A).Equicontinuous := fun x ↦ Set.EquicontinuousAt.closure (hA x)
+#align equicontinuous.closure Set.Equicontinuous.closure
 
-/-- If `𝓕 : ι → X → α` tends to `f : X → α` *pointwise* along some nontrivial filter, and if the
-family `𝓕` is equicontinuous, then the limit is continuous. -/
-theorem Filter.Tendsto.continuous_of_equicontinuousAt {l : Filter ι} [l.NeBot] {F : ι → X → α}
-    {f : X → α} (h₁ : Tendsto F l (𝓝 f)) (h₂ : Equicontinuous F) : Continuous f :=
-  continuous_iff_continuousAt.mpr fun x => h₁.continuousAt_of_equicontinuousAt (h₂ x)
-#align filter.tendsto.continuous_of_equicontinuous_at Filter.Tendsto.continuous_of_equicontinuousAt
-
-/-- A version of `UniformEquicontinuous.closure` applicable to subsets of types which embed
-continuously into `β → α` with the product topology. It turns out we don't need any other condition
-on the embedding than continuity, but in practice this will mostly be applied to `DFunLike` types
-where the coercion is injective. -/
-theorem UniformEquicontinuous.closure' {A : Set Y} {u : Y → β → α}
-    (hA : UniformEquicontinuous (u ∘ (↑) : A → β → α)) (hu : Continuous u) :
-    UniformEquicontinuous (u ∘ (↑) : closure A → β → α) := by
+/-- If a set of functions is equicontinuous, its closure for the product topology is also
+equicontinuous. This would also be true for the coarser topology of pointwise convergence on `S`,
+see `EquicontinuousOn.closure'`. -/
+protected theorem Set.EquicontinuousOn.closure {A : Set <| X → α} {S : Set X}
+    (hA : A.EquicontinuousOn S) : (closure A).EquicontinuousOn S :=
+  fun x hx ↦ Set.EquicontinuousWithinAt.closure (hA x hx)
+
+/-- If a set of functions is uniformly equicontinuous on a set `S`, the same is true for its
+closure in *any* topology for which evaluation at any `x ∈ S` i continuous. Since this will be
+applied to `DFunLike` types, we state it for any topological space whith a map to `β → α` satisfying
+the right continuity conditions. See also `Set.UniformEquicontinuousOn.closure` for a more familiar
+(but weaker) statement. -/
+theorem UniformEquicontinuousOn.closure' {A : Set Y} {u : Y → β → α} {S : Set β}
+    (hA : UniformEquicontinuousOn (u ∘ (↑) : A → β → α) S) (hu : Continuous (S.restrict ∘ u)) :
+    UniformEquicontinuousOn (u ∘ (↑) : closure A → β → α) S := by
   intro U hU
   rcases mem_uniformity_isClosed hU with ⟨V, hV, hVclosed, hVU⟩
-  filter_upwards [hA V hV]
-  rintro ⟨x, y⟩ hxy
+  filter_upwards [hA V hV, mem_inf_of_right (mem_principal_self _)]
+  rintro ⟨x, y⟩ hxy ⟨hxS, hyS⟩
   rw [SetCoe.forall] at *
   change A ⊆ (fun f => (u f x, u f y)) ⁻¹' V at hxy
-  refine' (closure_minimal hxy <| hVclosed.preimage <| _).trans (preimage_mono hVU)
-  exact Continuous.prod_mk ((continuous_apply x).comp hu) ((continuous_apply y).comp hu)
+  refine (closure_minimal hxy <| hVclosed.preimage <| .prod_mk ?_ ?_).trans (preimage_mono hVU)
+  · exact (continuous_apply ⟨x, hxS⟩).comp hu
+  · exact (continuous_apply ⟨y, hyS⟩).comp hu
+
+/-- If a set of functions is uniformly equicontinuous, the same is true for its closure in *any*
+topology for which evaluation at any point is continuous. Since this will be applied to
+`DFunLike` types, we state it for any topological space whith a map to `β → α` satisfying the right
+continuity conditions. See also `Set.UniformEquicontinuous.closure` for a more familiar statement.
+-/
+theorem UniformEquicontinuous.closure' {A : Set Y} {u : Y → β → α}
+    (hA : UniformEquicontinuous (u ∘ (↑) : A → β → α)) (hu : Continuous u) :
+    UniformEquicontinuous (u ∘ (↑) : closure A → β → α) := by
+  rw [← uniformEquicontinuousOn_univ] at hA ⊢
+  exact hA.closure' (Pi.continuous_restrict _ |>.comp hu)
 #align uniform_equicontinuous.closure' UniformEquicontinuous.closure'
 
 /-- If a set of functions is uniformly equicontinuous, its closure for the product topology is also
 uniformly equicontinuous. -/
-theorem UniformEquicontinuous.closure {A : Set <| β → α} (hA : A.UniformEquicontinuous) :
-    (closure A).UniformEquicontinuous :=
+protected theorem Set.UniformEquicontinuous.closure {A : Set <| β → α}
+    (hA : A.UniformEquicontinuous) : (closure A).UniformEquicontinuous :=
   UniformEquicontinuous.closure' (u := id) hA continuous_id
-#align uniform_equicontinuous.closure UniformEquicontinuous.closure
+#align uniform_equicontinuous.closure Set.UniformEquicontinuous.closure
+
+/-- If a set of functions is uniformly equicontinuous on a set `S`, its closure for the product
+topology is also uniformly equicontinuous. This would also be true for the coarser topology of
+pointwise convergence on `S`, see `UniformEquicontinuousOn.closure'`.-/
+protected theorem Set.UniformEquicontinuousOn.closure {A : Set <| β → α} {S : Set β}
+    (hA : A.UniformEquicontinuousOn S) : (closure A).UniformEquicontinuousOn S :=
+  UniformEquicontinuousOn.closure' (u := id) hA (Pi.continuous_restrict _)
+
+/-
+Implementation note: The following lemma (as well as all the following variations) could
+theoretically be deduced from the "closure" statements above. For example, we could do:
+```lean
+theorem Filter.Tendsto.continuousAt_of_equicontinuousAt {l : Filter ι} [l.NeBot] {F : ι → X → α}
+    {f : X → α} {x₀ : X} (h₁ : Tendsto F l (𝓝 f)) (h₂ : EquicontinuousAt F x₀) :
+    ContinuousAt f x₀ :=
+  (equicontinuousAt_iff_range.mp h₂).closure.continuousAt
+    ⟨f, mem_closure_of_tendsto h₁ <| eventually_of_forall mem_range_self⟩
 
-/-- If `𝓕 : ι → β → α` tends to `f : β → α` *pointwise* along some nontrivial filter, and if the
-family `𝓕` is uniformly equicontinuous, then the limit is uniformly continuous. -/
 theorem Filter.Tendsto.uniformContinuous_of_uniformEquicontinuous {l : Filter ι} [l.NeBot]
     {F : ι → β → α} {f : β → α} (h₁ : Tendsto F l (𝓝 f)) (h₂ : UniformEquicontinuous F) :
     UniformContinuous f :=
-  (uniformEquicontinuous_at_iff_range.mp h₂).closure.uniformContinuous
+  (uniformEquicontinuous_iff_range.mp h₂).closure.uniformContinuous
     ⟨f, mem_closure_of_tendsto h₁ <| eventually_of_forall mem_range_self⟩
+```
+
+Unfortunately, the proofs get painful when dealing with the relative case as one needs to change
+the ambient topology. So it turns out to be easier to re-do the proof by hand.
+-/
+
+/-- If `𝓕 : ι → X → α` tends to `f : X → α` *pointwise on `S ∪ {x₀} : Set X`* along some nontrivial
+filter, and if the family `𝓕` is equicontinuous at `x₀ : X` within `S`, then the limit is
+continuous at `x₀` within `S`. -/
+theorem Filter.Tendsto.continuousWithinAt_of_equicontinuousWithinAt {l : Filter ι} [l.NeBot]
+    {F : ι → X → α} {f : X → α} {S : Set X} {x₀ : X} (h₁ : ∀ x ∈ S, Tendsto (F · x) l (𝓝 (f x)))
+    (h₂ : Tendsto (F · x₀) l (𝓝 (f x₀))) (h₃ : EquicontinuousWithinAt F S x₀) :
+    ContinuousWithinAt f S x₀ := by
+  intro U hU; rw [mem_map]
+  rcases UniformSpace.mem_nhds_iff.mp hU with ⟨V, hV, hVU⟩
+  rcases mem_uniformity_isClosed hV with ⟨W, hW, hWclosed, hWV⟩
+  filter_upwards [h₃ W hW, eventually_mem_nhdsWithin] with x hx hxS using
+    hVU <| ball_mono hWV (f x₀) <| hWclosed.mem_of_tendsto (h₂.prod_mk_nhds (h₁ x hxS)) <|
+    eventually_of_forall hx
+
+/-- If `𝓕 : ι → X → α` tends to `f : X → α` *pointwise* along some nontrivial filter, and if the
+family `𝓕` is equicontinuous at some `x₀ : X`, then the limit is continuous at `x₀`. -/
+theorem Filter.Tendsto.continuousAt_of_equicontinuousAt {l : Filter ι} [l.NeBot] {F : ι → X → α}
+    {f : X → α} {x₀ : X} (h₁ : Tendsto F l (𝓝 f)) (h₂ : EquicontinuousAt F x₀) :
+    ContinuousAt f x₀ := by
+  rw [← continuousWithinAt_univ, ← equicontinuousWithinAt_univ, tendsto_pi_nhds] at *
+  exact continuousWithinAt_of_equicontinuousWithinAt (fun x _ ↦ h₁ x) (h₁ x₀) h₂
+#align filter.tendsto.continuous_at_of_equicontinuous_at Filter.Tendsto.continuousAt_of_equicontinuousAt
+
+/-- If `𝓕 : ι → X → α` tends to `f : X → α` *pointwise* along some nontrivial filter, and if the
+family `𝓕` is equicontinuous, then the limit is continuous. -/
+theorem Filter.Tendsto.continuous_of_equicontinuous {l : Filter ι} [l.NeBot] {F : ι → X → α}
+    {f : X → α} (h₁ : Tendsto F l (𝓝 f)) (h₂ : Equicontinuous F) : Continuous f :=
+  continuous_iff_continuousAt.mpr fun x => h₁.continuousAt_of_equicontinuousAt (h₂ x)
+#align filter.tendsto.continuous_of_equicontinuous_at Filter.Tendsto.continuous_of_equicontinuous
+
+/-- If `𝓕 : ι → X → α` tends to `f : X → α` *pointwise on `S : Set X`* along some nontrivial
+filter, and if the family `𝓕` is equicontinuous, then the limit is continuous on `S`. -/
+theorem Filter.Tendsto.continuousOn_of_equicontinuousOn {l : Filter ι} [l.NeBot] {F : ι → X → α}
+    {f : X → α} {S : Set X} (h₁ : ∀ x ∈ S, Tendsto (F · x) l (𝓝 (f x)))
+    (h₂ : EquicontinuousOn F S) : ContinuousOn f S :=
+  fun x hx ↦ Filter.Tendsto.continuousWithinAt_of_equicontinuousWithinAt h₁ (h₁ x hx) (h₂ x hx)
+
+/-- If `𝓕 : ι → β → α` tends to `f : β → α` *pointwise on `S : Set β`* along some nontrivial
+filter, and if the family `𝓕` is uniformly equicontinuous on `S`, then the limit is uniformly
+continuous on `S`. -/
+theorem Filter.Tendsto.uniformContinuousOn_of_uniformEquicontinuousOn {l : Filter ι} [l.NeBot]
+    {F : ι → β → α} {f : β → α} {S : Set β} (h₁ : ∀ x ∈ S, Tendsto (F · x) l (𝓝 (f x)))
+    (h₂ : UniformEquicontinuousOn F S) :
+    UniformContinuousOn f S := by
+  intro U hU; rw [mem_map]
+  rcases mem_uniformity_isClosed hU with ⟨V, hV, hVclosed, hVU⟩
+  filter_upwards [h₂ V hV, mem_inf_of_right (mem_principal_self _)]
+  rintro ⟨x, y⟩ hxy ⟨hxS, hyS⟩
+  exact hVU <| hVclosed.mem_of_tendsto ((h₁ x hxS).prod_mk_nhds (h₁ y hyS)) <|
+    eventually_of_forall hxy
+
+/-- If `𝓕 : ι → β → α` tends to `f : β → α` *pointwise* along some nontrivial filter, and if the
+family `𝓕` is uniformly equicontinuous, then the limit is uniformly continuous. -/
+theorem Filter.Tendsto.uniformContinuous_of_uniformEquicontinuous {l : Filter ι} [l.NeBot]
+    {F : ι → β → α} {f : β → α} (h₁ : Tendsto F l (𝓝 f)) (h₂ : UniformEquicontinuous F) :
+    UniformContinuous f := by
+  rw [← uniformContinuousOn_univ, ← uniformEquicontinuousOn_univ, tendsto_pi_nhds] at *
+  exact uniformContinuousOn_of_uniformEquicontinuousOn (fun x _ ↦ h₁ x) h₂
 #align filter.tendsto.uniform_continuous_of_uniform_equicontinuous Filter.Tendsto.uniformContinuous_of_uniformEquicontinuous
 
 /-- If `F : ι → X → α` is a family of functions equicontinuous at `x`,
chore(*): rename FunLike to DFunLike (#9785)

This prepares for the introduction of a non-dependent synonym of FunLike, which helps a lot with keeping #8386 readable.

This is entirely search-and-replace in 680197f combined with manual fixes in 4145626, e900597 and b8428f8. The commands that generated this change:

sed -i 's/\bFunLike\b/DFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\btoFunLike\b/toDFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/import Mathlib.Data.DFunLike/import Mathlib.Data.FunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\bHom_FunLike\b/Hom_DFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean     
sed -i 's/\binstFunLike\b/instDFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\bfunLike\b/instDFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\btoo many metavariables to apply `fun_like.has_coe_to_fun`/too many metavariables to apply `DFunLike.hasCoeToFun`/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean

Co-authored-by: Anne Baanen <Vierkantor@users.noreply.github.com>

Diff
@@ -441,7 +441,7 @@ theorem UniformInducing.uniformEquicontinuous_iff {F : ι → β → α} {u : α
 
 /-- A version of `EquicontinuousAt.closure` applicable to subsets of types which embed continuously
 into `X → α` with the product topology. It turns out we don't need any other condition on the
-embedding than continuity, but in practice this will mostly be applied to `FunLike` types where
+embedding than continuity, but in practice this will mostly be applied to `DFunLike` types where
 the coercion is injective. -/
 theorem EquicontinuousAt.closure' {A : Set Y} {u : Y → X → α} {x₀ : X}
     (hA : EquicontinuousAt (u ∘ (↑) : A → X → α) x₀) (hu : Continuous u) :
@@ -473,7 +473,7 @@ theorem Filter.Tendsto.continuousAt_of_equicontinuousAt {l : Filter ι} [l.NeBot
 
 /-- A version of `Equicontinuous.closure` applicable to subsets of types which embed continuously
 into `X → α` with the product topology. It turns out we don't need any other condition on the
-embedding than continuity, but in practice this will mostly be applied to `FunLike` types where
+embedding than continuity, but in practice this will mostly be applied to `DFunLike` types where
 the coercion is injective. -/
 theorem Equicontinuous.closure' {A : Set Y} {u : Y → X → α}
     (hA : Equicontinuous (u ∘ (↑) : A → X → α)) (hu : Continuous u) :
@@ -495,7 +495,7 @@ theorem Filter.Tendsto.continuous_of_equicontinuousAt {l : Filter ι} [l.NeBot]
 
 /-- A version of `UniformEquicontinuous.closure` applicable to subsets of types which embed
 continuously into `β → α` with the product topology. It turns out we don't need any other condition
-on the embedding than continuity, but in practice this will mostly be applied to `FunLike` types
+on the embedding than continuity, but in practice this will mostly be applied to `DFunLike` types
 where the coercion is injective. -/
 theorem UniformEquicontinuous.closure' {A : Set Y} {u : Y → β → α}
     (hA : UniformEquicontinuous (u ∘ (↑) : A → β → α)) (hu : Continuous u) :
chore(*): use ∃ x ∈ s, _ instead of ∃ (x) (_ : x ∈ s), _ (#9184)

Search for [∀∃].*(_ and manually replace some occurrences with more readable versions. In case of , the new expressions are defeq to the old ones. In case of , they differ by exists_prop.

In some rare cases, golf proofs that needed fixing.

Diff
@@ -353,8 +353,6 @@ theorem uniform_equicontinuous_infi_dom {β' : Type*} {u : κ → UniformSpace 
   simp_rw [@uniformEquicontinuous_iff_uniformContinuous _ _ _ _ _] at hk ⊢
   exact uniformContinuous_iInf_dom hk
 
--- Porting note: changed from `∃ k (_ : p k), _` to `∃ k, p k ∧ _` since Lean 4 generates the
--- second one when parsing expressions like `∃ δ > 0, _`.
 theorem Filter.HasBasis.equicontinuousAt_iff_left {κ : Type*} {p : κ → Prop} {s : κ → Set X}
     {F : ι → X → α} {x₀ : X} (hX : (𝓝 x₀).HasBasis p s) :
     EquicontinuousAt F x₀ ↔ ∀ U ∈ 𝓤 α, ∃ k, p k ∧ ∀ x ∈ s k, ∀ i, (F i x₀, F i x) ∈ U := by
@@ -372,8 +370,6 @@ theorem Filter.HasBasis.equicontinuousAt_iff_right {κ : Type*} {p : κ → Prop
   rfl
 #align filter.has_basis.equicontinuous_at_iff_right Filter.HasBasis.equicontinuousAt_iff_right
 
--- Porting note: changed from `∃ k (_ : p k), _` to `∃ k, p k ∧ _` since Lean 4 generates the
--- second one when parsing expressions like `∃ δ > 0, _`.
 theorem Filter.HasBasis.equicontinuousAt_iff {κ₁ κ₂ : Type*} {p₁ : κ₁ → Prop} {s₁ : κ₁ → Set X}
     {p₂ : κ₂ → Prop} {s₂ : κ₂ → Set (α × α)} {F : ι → X → α} {x₀ : X} (hX : (𝓝 x₀).HasBasis p₁ s₁)
     (hα : (𝓤 α).HasBasis p₂ s₂) :
@@ -385,8 +381,6 @@ theorem Filter.HasBasis.equicontinuousAt_iff {κ₁ κ₂ : Type*} {p₁ : κ₁
   rfl
 #align filter.has_basis.equicontinuous_at_iff Filter.HasBasis.equicontinuousAt_iff
 
--- Porting note: changed from `∃ k (_ : p k), _` to `∃ k, p k ∧ _` since Lean 4 generates the
--- second one when parsing expressions like `∃ δ > 0, _`.
 theorem Filter.HasBasis.uniformEquicontinuous_iff_left {κ : Type*} {p : κ → Prop}
     {s : κ → Set (β × β)} {F : ι → β → α} (hβ : (𝓤 β).HasBasis p s) :
     UniformEquicontinuous F ↔
@@ -405,8 +399,6 @@ theorem Filter.HasBasis.uniformEquicontinuous_iff_right {κ : Type*} {p : κ →
   rfl
 #align filter.has_basis.uniform_equicontinuous_iff_right Filter.HasBasis.uniformEquicontinuous_iff_right
 
--- Porting note: changed from `∃ k (_ : p k), _` to `∃ k, p k ∧ _` since Lean 4 generates the
--- second one when parsing expressions like `∃ δ > 0, _`.
 theorem Filter.HasBasis.uniformEquicontinuous_iff {κ₁ κ₂ : Type*} {p₁ : κ₁ → Prop}
     {s₁ : κ₁ → Set (β × β)} {p₂ : κ₂ → Prop} {s₂ : κ₂ → Set (α × α)} {F : ι → β → α}
     (hβ : (𝓤 β).HasBasis p₁ s₁) (hα : (𝓤 α).HasBasis p₂ s₂) :
chore: Remove nonterminal simp at (#7795)

Removes nonterminal uses of simp at. Replaces most of these with instances of simp? ... says.

Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Mario Carneiro <di.gama@gmail.com>

Diff
@@ -335,7 +335,8 @@ theorem uniformEquicontinuous_iInf_rng {α' : Type*} {u : κ → UniformSpace α
 theorem equicontinuousAt_iInf_dom {X' : Type*} {t : κ → TopologicalSpace X'} {F : ι → X' → α}
     {x₀ : X'} {k : κ} (hk : @EquicontinuousAt _ _ _ (t k) _ F x₀) :
     @EquicontinuousAt _ _ _ (⨅ k, t k) _ F x₀ := by
-  simp [@equicontinuousAt_iff_continuousAt _ _ _ _] at hk ⊢
+  simp? [@equicontinuousAt_iff_continuousAt _ _ _ _] at hk ⊢ says
+    simp only [@equicontinuousAt_iff_continuousAt _ _ _ _] at hk ⊢
   unfold ContinuousAt at hk ⊢
   rw [nhds_iInf]
   exact tendsto_iInf' k hk
chore: Replace (· op ·) a by (a op ·) (#8843)

I used the regex \(\(· (.) ·\) (.)\), replacing with ($2 $1 ·).

Diff
@@ -421,7 +421,7 @@ theorem Filter.HasBasis.uniformEquicontinuous_iff {κ₁ κ₂ : Type*} {p₁ :
 `x₀ : X` iff the family `𝓕'`, obtained by precomposing each function of `𝓕` by `u`, is
 equicontinuous at `x₀`. -/
 theorem UniformInducing.equicontinuousAt_iff {F : ι → X → α} {x₀ : X} {u : α → β}
-    (hu : UniformInducing u) : EquicontinuousAt F x₀ ↔ EquicontinuousAt ((· ∘ ·) u ∘ F) x₀ := by
+    (hu : UniformInducing u) : EquicontinuousAt F x₀ ↔ EquicontinuousAt ((u ∘ ·) ∘ F) x₀ := by
   have := (UniformFun.postcomp_uniformInducing (α := ι) hu).inducing
   rw [equicontinuousAt_iff_continuousAt, equicontinuousAt_iff_continuousAt, this.continuousAt_iff]
   rfl
@@ -430,7 +430,7 @@ theorem UniformInducing.equicontinuousAt_iff {F : ι → X → α} {x₀ : X} {u
 /-- Given `u : α → β` a uniform inducing map, a family `𝓕 : ι → X → α` is equicontinuous iff the
 family `𝓕'`, obtained by precomposing each function of `𝓕` by `u`, is equicontinuous. -/
 theorem UniformInducing.equicontinuous_iff {F : ι → X → α} {u : α → β} (hu : UniformInducing u) :
-    Equicontinuous F ↔ Equicontinuous ((· ∘ ·) u ∘ F) := by
+    Equicontinuous F ↔ Equicontinuous ((u ∘ ·) ∘ F) := by
   congrm ∀ x, ?_
   rw [hu.equicontinuousAt_iff]
 #align uniform_inducing.equicontinuous_iff UniformInducing.equicontinuous_iff
@@ -439,7 +439,7 @@ theorem UniformInducing.equicontinuous_iff {F : ι → X → α} {u : α → β}
 iff the family `𝓕'`, obtained by precomposing each function of `𝓕` by `u`, is uniformly
 equicontinuous. -/
 theorem UniformInducing.uniformEquicontinuous_iff {F : ι → β → α} {u : α → γ}
-    (hu : UniformInducing u) : UniformEquicontinuous F ↔ UniformEquicontinuous ((· ∘ ·) u ∘ F) := by
+    (hu : UniformInducing u) : UniformEquicontinuous F ↔ UniformEquicontinuous ((u ∘ ·) ∘ F) := by
   have := UniformFun.postcomp_uniformInducing (α := ι) hu
   rw [uniformEquicontinuous_iff_uniformContinuous, uniformEquicontinuous_iff_uniformContinuous,
     this.uniformContinuous_iff]
chore: remove nonterminal simp (#7580)

Removes nonterminal simps on lines looking like simp [...]

Diff
@@ -318,7 +318,7 @@ theorem uniformEquicontinuous_iff_uniformContinuous {F : ι → β → α} :
 theorem equicontinuousAt_iInf_rng {α' : Type*} {u : κ → UniformSpace α'} {F : ι → X → α'}
     {x₀ : X} :
     @EquicontinuousAt _ _ _ _ (⨅ k, u k) F x₀ ↔ ∀ k, @EquicontinuousAt _ _ _ _ (u k) F x₀ := by
-  simp [@equicontinuousAt_iff_continuousAt _ _ _ _ _, UniformFun.topologicalSpace]
+  simp only [@equicontinuousAt_iff_continuousAt _ _ _ _ _, topologicalSpace]
   unfold ContinuousAt
   rw [UniformFun.iInf_eq, toTopologicalSpace_iInf, nhds_iInf, tendsto_iInf]
 
feat(Equicontinuity): equicontinuous family converges on a closed set (#6942)

If F : ι → X → α is an equicontinuous family of functions and f : X → α is a continuous function, then {x | Tendsto (F · x) l (𝓝 (f x))} is a closed set.

Diff
@@ -464,7 +464,7 @@ theorem EquicontinuousAt.closure' {A : Set Y} {u : Y → X → α} {x₀ : X}
 
 /-- If a set of functions is equicontinuous at some `x₀`, its closure for the product topology is
 also equicontinuous at `x₀`. -/
-theorem EquicontinuousAt.closure {A : Set <| X → α} {x₀ : X} (hA : A.EquicontinuousAt x₀) :
+protected theorem EquicontinuousAt.closure {A : Set (X → α)} {x₀ : X} (hA : A.EquicontinuousAt x₀) :
     (closure A).EquicontinuousAt x₀ :=
   EquicontinuousAt.closure' (u := id) hA continuous_id
 #align equicontinuous_at.closure EquicontinuousAt.closure
@@ -533,6 +533,35 @@ theorem Filter.Tendsto.uniformContinuous_of_uniformEquicontinuous {l : Filter ι
     ⟨f, mem_closure_of_tendsto h₁ <| eventually_of_forall mem_range_self⟩
 #align filter.tendsto.uniform_continuous_of_uniform_equicontinuous Filter.Tendsto.uniformContinuous_of_uniformEquicontinuous
 
+/-- If `F : ι → X → α` is a family of functions equicontinuous at `x`,
+it tends to `f y` along a filter `l` for any `y ∈ s`,
+the limit function `f` tends to `z` along `𝓝[s] x`, and `x ∈ closure s`,
+then `(F · x)` tends to `z` along `l`.
+
+In some sense, this is a converse of `EquicontinuousAt.closure`. -/
+theorem EquicontinuousAt.tendsto_of_mem_closure {l : Filter ι} {F : ι → X → α} {f : X → α}
+    {s : Set X} {x : X} {z : α} (hF : EquicontinuousAt F x) (hf : Tendsto f (𝓝[s] x) (𝓝 z))
+    (hs : ∀ y ∈ s, Tendsto (F · y) l (𝓝 (f y))) (hx : x ∈ closure s) :
+    Tendsto (F · x) l (𝓝 z) := by
+  rw [(nhds_basis_uniformity (𝓤 α).basis_sets).tendsto_right_iff] at hf ⊢
+  intro U hU
+  rcases comp_comp_symm_mem_uniformity_sets hU with ⟨V, hV, hVs, hVU⟩
+  rw [mem_closure_iff_nhdsWithin_neBot] at hx
+  have : ∀ᶠ y in 𝓝[s] x, y ∈ s ∧ (∀ i, (F i x, F i y) ∈ V) ∧ (f y, z) ∈ V :=
+    eventually_mem_nhdsWithin.and <| ((hF V hV).filter_mono nhdsWithin_le_nhds).and (hf V hV)
+  rcases this.exists with ⟨y, hys, hFy, hfy⟩
+  filter_upwards [hs y hys (ball_mem_nhds _ hV)] with i hi
+  exact hVU ⟨_, ⟨_, hFy i, (mem_ball_symmetry hVs).2 hi⟩, hfy⟩
+
+/-- If `F : ι → X → α` is an equicontinuous family of functions,
+`f : X → α` is a continuous function, and `l` is a filter on `ι`,
+then `{x | Filter.Tendsto (F · x) l (𝓝 (f x))}` is a closed set. -/
+theorem Equicontinuous.isClosed_setOf_tendsto {l : Filter ι} {F : ι → X → α} {f : X → α}
+    (hF : Equicontinuous F) (hf : Continuous f) :
+    IsClosed {x | Tendsto (F · x) l (𝓝 (f x))} :=
+  closure_subset_iff_isClosed.mp fun x hx ↦
+    (hF x).tendsto_of_mem_closure (hf.continuousAt.mono_left inf_le_left) (fun _ ↦ id) hx
+
 end
 
 end
fix(Analysis,Topology): fix names (#6938)

Rename:

  • tendsto_iff_norm_tendsto_onetendsto_iff_norm_div_tendsto_zero;
  • tendsto_iff_norm_tendsto_zerotendsto_iff_norm_sub_tendsto_zero;
  • tendsto_one_iff_norm_tendsto_onetendsto_one_iff_norm_tendsto_zero;
  • Filter.Tendsto.continuous_of_equicontinuous_atFilter.Tendsto.continuous_of_equicontinuousAt.
Diff
@@ -495,10 +495,10 @@ theorem Equicontinuous.closure {A : Set <| X → α} (hA : A.Equicontinuous) :
 
 /-- If `𝓕 : ι → X → α` tends to `f : X → α` *pointwise* along some nontrivial filter, and if the
 family `𝓕` is equicontinuous, then the limit is continuous. -/
-theorem Filter.Tendsto.continuous_of_equicontinuous_at {l : Filter ι} [l.NeBot] {F : ι → X → α}
+theorem Filter.Tendsto.continuous_of_equicontinuousAt {l : Filter ι} [l.NeBot] {F : ι → X → α}
     {f : X → α} (h₁ : Tendsto F l (𝓝 f)) (h₂ : Equicontinuous F) : Continuous f :=
   continuous_iff_continuousAt.mpr fun x => h₁.continuousAt_of_equicontinuousAt (h₂ x)
-#align filter.tendsto.continuous_of_equicontinuous_at Filter.Tendsto.continuous_of_equicontinuous_at
+#align filter.tendsto.continuous_of_equicontinuous_at Filter.Tendsto.continuous_of_equicontinuousAt
 
 /-- A version of `UniformEquicontinuous.closure` applicable to subsets of types which embed
 continuously into `β → α` with the product topology. It turns out we don't need any other condition
feat(Topology/../Equicontinuity): add lemmas about finite index type (#6849)
Diff
@@ -126,18 +126,58 @@ protected abbrev Set.UniformEquicontinuous (H : Set <| β → α) : Prop :=
   UniformEquicontinuous ((↑) : H → β → α)
 #align set.uniform_equicontinuous Set.UniformEquicontinuous
 
+/-!
+### Empty index type
+-/
+
+@[simp]
 lemma equicontinuousAt_empty [h : IsEmpty ι] (F : ι → X → α) (x₀ : X) :
     EquicontinuousAt F x₀ :=
   fun _ _ ↦ eventually_of_forall (fun _ ↦ h.elim)
 
+@[simp]
 lemma equicontinuous_empty [IsEmpty ι] (F : ι → X → α) :
     Equicontinuous F :=
   equicontinuousAt_empty F
 
+@[simp]
 lemma uniformEquicontinuous_empty [h : IsEmpty ι] (F : ι → β → α) :
     UniformEquicontinuous F :=
   fun _ _ ↦ eventually_of_forall (fun _ ↦ h.elim)
 
+/-!
+### Finite index type
+-/
+
+theorem equicontinuousAt_finite [Finite ι] {F : ι → X → α} {x₀ : X} :
+    EquicontinuousAt F x₀ ↔ ∀ i, ContinuousAt (F i) x₀ := by
+  simp [EquicontinuousAt, ContinuousAt, (nhds_basis_uniformity' (𝓤 α).basis_sets).tendsto_right_iff,
+    UniformSpace.ball, @forall_swap _ ι]
+
+theorem equicontinuous_finite [Finite ι] {F : ι → X → α} :
+    Equicontinuous F ↔ ∀ i, Continuous (F i) := by
+  simp only [Equicontinuous, equicontinuousAt_finite, continuous_iff_continuousAt, @forall_swap ι]
+
+theorem uniformEquicontinuous_finite [Finite ι] {F : ι → β → α} :
+    UniformEquicontinuous F ↔ ∀ i, UniformContinuous (F i) := by
+  simp only [UniformEquicontinuous, eventually_all, @forall_swap _ ι]; rfl
+
+/-!
+### Index type with a unique element
+-/
+
+theorem equicontinuousAt_unique [Unique ι] {F : ι → X → α} {x : X} :
+    EquicontinuousAt F x ↔ ContinuousAt (F default) x :=
+  equicontinuousAt_finite.trans Unique.forall_iff
+
+theorem equicontinuous_unique [Unique ι] {F : ι → X → α} :
+    Equicontinuous F ↔ Continuous (F default) :=
+  equicontinuous_finite.trans Unique.forall_iff
+
+theorem uniformEquicontinuous_unique [Unique ι] {F : ι → β → α} :
+    UniformEquicontinuous F ↔ UniformContinuous (F default) :=
+  uniformEquicontinuous_finite.trans Unique.forall_iff
+
 /-- Reformulation of equicontinuity at `x₀` comparing two variables near `x₀` instead of comparing
 only one with `x₀`. -/
 theorem equicontinuousAt_iff_pair {F : ι → X → α} {x₀ : X} :
@@ -148,7 +188,7 @@ theorem equicontinuousAt_iff_pair {F : ι → X → α} {x₀ : X} :
     refine' ⟨_, H V hV, fun x hx y hy i => hVU (prod_mk_mem_compRel _ (hy i))⟩
     exact hVsymm.mk_mem_comm.mp (hx i)
   · rcases H U hU with ⟨V, hV, hVU⟩
-    filter_upwards [hV]using fun x hx i => hVU x₀ (mem_of_mem_nhds hV) x hx i
+    filter_upwards [hV] using fun x hx i => hVU x₀ (mem_of_mem_nhds hV) x hx i
 #align equicontinuous_at_iff_pair equicontinuousAt_iff_pair
 
 /-- Uniform equicontinuity implies equicontinuity. -/
@@ -159,11 +199,8 @@ theorem UniformEquicontinuous.equicontinuous {F : ι → β → α} (h : Uniform
 
 /-- Each function of a family equicontinuous at `x₀` is continuous at `x₀`. -/
 theorem EquicontinuousAt.continuousAt {F : ι → X → α} {x₀ : X} (h : EquicontinuousAt F x₀) (i : ι) :
-    ContinuousAt (F i) x₀ := by
-  intro U hU
-  rw [UniformSpace.mem_nhds_iff] at hU
-  rcases hU with ⟨V, hV₁, hV₂⟩
-  exact mem_map.mpr (mem_of_superset (h V hV₁) fun x hx => hV₂ (hx i))
+    ContinuousAt (F i) x₀ :=
+  (UniformSpace.hasBasis_nhds _).tendsto_right_iff.2 fun U ⟨hU, _⟩ ↦ (h U hU).mono fun _x hx ↦ hx i
 #align equicontinuous_at.continuous_at EquicontinuousAt.continuousAt
 
 protected theorem Set.EquicontinuousAt.continuousAt_of_mem {H : Set <| X → α} {x₀ : X}
@@ -226,9 +263,8 @@ protected theorem Set.UniformEquicontinuous.mono {H H' : Set <| β → α} (h :
 /-- A family `𝓕 : ι → X → α` is equicontinuous at `x₀` iff `range 𝓕` is equicontinuous at `x₀`,
 i.e the family `(↑) : range F → X → α` is equicontinuous at `x₀`. -/
 theorem equicontinuousAt_iff_range {F : ι → X → α} {x₀ : X} :
-    EquicontinuousAt F x₀ ↔ EquicontinuousAt ((↑) : range F → X → α) x₀ :=
-  ⟨fun h => by rw [← comp_rangeSplitting F]; exact h.comp _,
-   fun h => h.comp (rangeFactorization F)⟩
+    EquicontinuousAt F x₀ ↔ EquicontinuousAt ((↑) : range F → X → α) x₀ := by
+  simp only [EquicontinuousAt, forall_subtype_range_iff]
 #align equicontinuous_at_iff_range equicontinuousAt_iff_range
 
 /-- A family `𝓕 : ι → X → α` is equicontinuous iff `range 𝓕` is equicontinuous,
@@ -419,7 +455,7 @@ theorem EquicontinuousAt.closure' {A : Set Y} {u : Y → X → α} {x₀ : X}
     EquicontinuousAt (u ∘ (↑) : closure A → X → α) x₀ := by
   intro U hU
   rcases mem_uniformity_isClosed hU with ⟨V, hV, hVclosed, hVU⟩
-  filter_upwards [hA V hV]with x hx
+  filter_upwards [hA V hV] with x hx
   rw [SetCoe.forall] at *
   change A ⊆ (fun f => (u f x₀, u f x)) ⁻¹' V at hx
   refine' (closure_minimal hx <| hVclosed.preimage <| _).trans (preimage_mono hVU)
feat: congr(...) congruence quotations and port congrm tactic (#2544)

Adds a term elaborator for congr(...) "congruence quotations". For example, if hf : f = f' and hx : x = x', then we have congr($hf $x) : f x = f' x'. This supports the functions having implicit arguments, and it has support for subsingleton instance arguments. So for example, if s t : Set X are sets with Fintype instances and h : s = t then congr(Fintype.card $h) : Fintype.card s = Fintype.card t works.

Ports the congrm tactic as a convenient frontend for applying a congruence quotation to the goal. Holes are turned into congruence holes. For example, congrm 1 + ?_ uses congr(1 + $(?_)). Placeholders (_) do not turn into congruence holes; that's not to say they have to be identical on the LHS and RHS, but congrm itself is responsible for finding a congruence lemma for such arguments.

Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Moritz Doll <moritz.doll@googlemail.com>

Diff
@@ -395,13 +395,8 @@ theorem UniformInducing.equicontinuousAt_iff {F : ι → X → α} {x₀ : X} {u
 family `𝓕'`, obtained by precomposing each function of `𝓕` by `u`, is equicontinuous. -/
 theorem UniformInducing.equicontinuous_iff {F : ι → X → α} {u : α → β} (hu : UniformInducing u) :
     Equicontinuous F ↔ Equicontinuous ((· ∘ ·) u ∘ F) := by
-  have : ∀ x, EquicontinuousAt F x ↔ EquicontinuousAt ((fun x x_1 => x ∘ x_1) u ∘ F) x := by
-    intro
-    rw [hu.equicontinuousAt_iff]
-  exact ⟨fun h x => (this x).mp (h x), fun h x => (this x).mpr (h x)⟩
-  -- Porting note: proof was:
-  -- congrm (∀ x, _ : Prop)
-  -- rw [hu.equicontinuousAt_iff]
+  congrm ∀ x, ?_
+  rw [hu.equicontinuousAt_iff]
 #align uniform_inducing.equicontinuous_iff UniformInducing.equicontinuous_iff
 
 /-- Given `u : α → γ` a uniform inducing map, a family `𝓕 : ι → β → α` is uniformly equicontinuous
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
@@ -85,7 +85,7 @@ section
 
 open UniformSpace Filter Set Uniformity Topology UniformConvergence
 
-variable {ι κ X Y Z α β γ 𝓕 : Type _} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z]
+variable {ι κ X Y Z α β γ 𝓕 : Type*} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z]
   [UniformSpace α] [UniformSpace β] [UniformSpace γ]
 
 /-- A family `F : ι → X → α` of functions from a topological space to a uniform space is
@@ -279,24 +279,24 @@ theorem uniformEquicontinuous_iff_uniformContinuous {F : ι → β → α} :
   rfl
 #align uniform_equicontinuous_iff_uniform_continuous uniformEquicontinuous_iff_uniformContinuous
 
-theorem equicontinuousAt_iInf_rng {α' : Type _} {u : κ → UniformSpace α'} {F : ι → X → α'}
+theorem equicontinuousAt_iInf_rng {α' : Type*} {u : κ → UniformSpace α'} {F : ι → X → α'}
     {x₀ : X} :
     @EquicontinuousAt _ _ _ _ (⨅ k, u k) F x₀ ↔ ∀ k, @EquicontinuousAt _ _ _ _ (u k) F x₀ := by
   simp [@equicontinuousAt_iff_continuousAt _ _ _ _ _, UniformFun.topologicalSpace]
   unfold ContinuousAt
   rw [UniformFun.iInf_eq, toTopologicalSpace_iInf, nhds_iInf, tendsto_iInf]
 
-theorem equicontinuous_iInf_rng {α' : Type _} {u : κ → UniformSpace α'} {F : ι → X → α'} :
+theorem equicontinuous_iInf_rng {α' : Type*} {u : κ → UniformSpace α'} {F : ι → X → α'} :
     @Equicontinuous _ _ _ _ (⨅ k, u k) F ↔ ∀ k, @Equicontinuous _ _ _ _ (u k) F := by
   simp_rw [@equicontinuous_iff_continuous _ _ _ _ _, UniformFun.topologicalSpace]
   rw [UniformFun.iInf_eq, toTopologicalSpace_iInf, continuous_iInf_rng]
 
-theorem uniformEquicontinuous_iInf_rng {α' : Type _} {u : κ → UniformSpace α'} {F : ι → β → α'} :
+theorem uniformEquicontinuous_iInf_rng {α' : Type*} {u : κ → UniformSpace α'} {F : ι → β → α'} :
     @UniformEquicontinuous _ _ _ (⨅ k, u k) _ F ↔ ∀ k, @UniformEquicontinuous _ _ _ (u k) _ F := by
   simp_rw [@uniformEquicontinuous_iff_uniformContinuous _ _ _ _]
   rw [UniformFun.iInf_eq, uniformContinuous_iInf_rng]
 
-theorem equicontinuousAt_iInf_dom {X' : Type _} {t : κ → TopologicalSpace X'} {F : ι → X' → α}
+theorem equicontinuousAt_iInf_dom {X' : Type*} {t : κ → TopologicalSpace X'} {F : ι → X' → α}
     {x₀ : X'} {k : κ} (hk : @EquicontinuousAt _ _ _ (t k) _ F x₀) :
     @EquicontinuousAt _ _ _ (⨅ k, t k) _ F x₀ := by
   simp [@equicontinuousAt_iff_continuousAt _ _ _ _] at hk ⊢
@@ -304,13 +304,13 @@ theorem equicontinuousAt_iInf_dom {X' : Type _} {t : κ → TopologicalSpace X'}
   rw [nhds_iInf]
   exact tendsto_iInf' k hk
 
-theorem equicontinuous_iInf_dom {X' : Type _} {t : κ → TopologicalSpace X'} {F : ι → X' → α}
+theorem equicontinuous_iInf_dom {X' : Type*} {t : κ → TopologicalSpace X'} {F : ι → X' → α}
     {k : κ} (hk : @Equicontinuous _ _ _ (t k) _ F) :
     @Equicontinuous _ _ _ (⨅ k, t k) _ F := by
   simp_rw [@equicontinuous_iff_continuous _ _ _ _] at hk ⊢
   exact continuous_iInf_dom hk
 
-theorem uniform_equicontinuous_infi_dom {β' : Type _} {u : κ → UniformSpace β'} {F : ι → β' → α}
+theorem uniform_equicontinuous_infi_dom {β' : Type*} {u : κ → UniformSpace β'} {F : ι → β' → α}
     {k : κ} (hk : @UniformEquicontinuous _ _ _ _ (u k) F) :
     @UniformEquicontinuous _ _ _ _ (⨅ k, u k) F := by
   simp_rw [@uniformEquicontinuous_iff_uniformContinuous _ _ _ _ _] at hk ⊢
@@ -318,7 +318,7 @@ theorem uniform_equicontinuous_infi_dom {β' : Type _} {u : κ → UniformSpace
 
 -- Porting note: changed from `∃ k (_ : p k), _` to `∃ k, p k ∧ _` since Lean 4 generates the
 -- second one when parsing expressions like `∃ δ > 0, _`.
-theorem Filter.HasBasis.equicontinuousAt_iff_left {κ : Type _} {p : κ → Prop} {s : κ → Set X}
+theorem Filter.HasBasis.equicontinuousAt_iff_left {κ : Type*} {p : κ → Prop} {s : κ → Set X}
     {F : ι → X → α} {x₀ : X} (hX : (𝓝 x₀).HasBasis p s) :
     EquicontinuousAt F x₀ ↔ ∀ U ∈ 𝓤 α, ∃ k, p k ∧ ∀ x ∈ s k, ∀ i, (F i x₀, F i x) ∈ U := by
   rw [equicontinuousAt_iff_continuousAt, ContinuousAt,
@@ -327,7 +327,7 @@ theorem Filter.HasBasis.equicontinuousAt_iff_left {κ : Type _} {p : κ → Prop
   rfl
 #align filter.has_basis.equicontinuous_at_iff_left Filter.HasBasis.equicontinuousAt_iff_left
 
-theorem Filter.HasBasis.equicontinuousAt_iff_right {κ : Type _} {p : κ → Prop} {s : κ → Set (α × α)}
+theorem Filter.HasBasis.equicontinuousAt_iff_right {κ : Type*} {p : κ → Prop} {s : κ → Set (α × α)}
     {F : ι → X → α} {x₀ : X} (hα : (𝓤 α).HasBasis p s) :
     EquicontinuousAt F x₀ ↔ ∀ k, p k → ∀ᶠ x in 𝓝 x₀, ∀ i, (F i x₀, F i x) ∈ s k := by
   rw [equicontinuousAt_iff_continuousAt, ContinuousAt,
@@ -337,7 +337,7 @@ theorem Filter.HasBasis.equicontinuousAt_iff_right {κ : Type _} {p : κ → Pro
 
 -- Porting note: changed from `∃ k (_ : p k), _` to `∃ k, p k ∧ _` since Lean 4 generates the
 -- second one when parsing expressions like `∃ δ > 0, _`.
-theorem Filter.HasBasis.equicontinuousAt_iff {κ₁ κ₂ : Type _} {p₁ : κ₁ → Prop} {s₁ : κ₁ → Set X}
+theorem Filter.HasBasis.equicontinuousAt_iff {κ₁ κ₂ : Type*} {p₁ : κ₁ → Prop} {s₁ : κ₁ → Set X}
     {p₂ : κ₂ → Prop} {s₂ : κ₂ → Set (α × α)} {F : ι → X → α} {x₀ : X} (hX : (𝓝 x₀).HasBasis p₁ s₁)
     (hα : (𝓤 α).HasBasis p₂ s₂) :
     EquicontinuousAt F x₀ ↔
@@ -350,7 +350,7 @@ theorem Filter.HasBasis.equicontinuousAt_iff {κ₁ κ₂ : Type _} {p₁ : κ
 
 -- Porting note: changed from `∃ k (_ : p k), _` to `∃ k, p k ∧ _` since Lean 4 generates the
 -- second one when parsing expressions like `∃ δ > 0, _`.
-theorem Filter.HasBasis.uniformEquicontinuous_iff_left {κ : Type _} {p : κ → Prop}
+theorem Filter.HasBasis.uniformEquicontinuous_iff_left {κ : Type*} {p : κ → Prop}
     {s : κ → Set (β × β)} {F : ι → β → α} (hβ : (𝓤 β).HasBasis p s) :
     UniformEquicontinuous F ↔
       ∀ U ∈ 𝓤 α, ∃ k, p k ∧ ∀ x y, (x, y) ∈ s k → ∀ i, (F i x, F i y) ∈ U := by
@@ -360,7 +360,7 @@ theorem Filter.HasBasis.uniformEquicontinuous_iff_left {κ : Type _} {p : κ →
   rfl
 #align filter.has_basis.uniform_equicontinuous_iff_left Filter.HasBasis.uniformEquicontinuous_iff_left
 
-theorem Filter.HasBasis.uniformEquicontinuous_iff_right {κ : Type _} {p : κ → Prop}
+theorem Filter.HasBasis.uniformEquicontinuous_iff_right {κ : Type*} {p : κ → Prop}
     {s : κ → Set (α × α)} {F : ι → β → α} (hα : (𝓤 α).HasBasis p s) :
     UniformEquicontinuous F ↔ ∀ k, p k → ∀ᶠ xy : β × β in 𝓤 β, ∀ i, (F i xy.1, F i xy.2) ∈ s k := by
   rw [uniformEquicontinuous_iff_uniformContinuous, UniformContinuous,
@@ -370,7 +370,7 @@ theorem Filter.HasBasis.uniformEquicontinuous_iff_right {κ : Type _} {p : κ 
 
 -- Porting note: changed from `∃ k (_ : p k), _` to `∃ k, p k ∧ _` since Lean 4 generates the
 -- second one when parsing expressions like `∃ δ > 0, _`.
-theorem Filter.HasBasis.uniformEquicontinuous_iff {κ₁ κ₂ : Type _} {p₁ : κ₁ → Prop}
+theorem Filter.HasBasis.uniformEquicontinuous_iff {κ₁ κ₂ : Type*} {p₁ : κ₁ → Prop}
     {s₁ : κ₁ → Set (β × β)} {p₂ : κ₂ → Prop} {s₂ : κ₂ → Set (α × α)} {F : ι → β → α}
     (hβ : (𝓤 β).HasBasis p₁ s₁) (hα : (𝓤 α).HasBasis p₂ s₂) :
     UniformEquicontinuous F ↔
feat(Analysis/LocallyConvex/WithSeminorms): equicontinuity criteria (#5580)
Diff
@@ -126,6 +126,18 @@ protected abbrev Set.UniformEquicontinuous (H : Set <| β → α) : Prop :=
   UniformEquicontinuous ((↑) : H → β → α)
 #align set.uniform_equicontinuous Set.UniformEquicontinuous
 
+lemma equicontinuousAt_empty [h : IsEmpty ι] (F : ι → X → α) (x₀ : X) :
+    EquicontinuousAt F x₀ :=
+  fun _ _ ↦ eventually_of_forall (fun _ ↦ h.elim)
+
+lemma equicontinuous_empty [IsEmpty ι] (F : ι → X → α) :
+    Equicontinuous F :=
+  equicontinuousAt_empty F
+
+lemma uniformEquicontinuous_empty [h : IsEmpty ι] (F : ι → β → α) :
+    UniformEquicontinuous F :=
+  fun _ _ ↦ eventually_of_forall (fun _ ↦ h.elim)
+
 /-- Reformulation of equicontinuity at `x₀` comparing two variables near `x₀` instead of comparing
 only one with `x₀`. -/
 theorem equicontinuousAt_iff_pair {F : ι → X → α} {x₀ : X} :
@@ -267,6 +279,43 @@ theorem uniformEquicontinuous_iff_uniformContinuous {F : ι → β → α} :
   rfl
 #align uniform_equicontinuous_iff_uniform_continuous uniformEquicontinuous_iff_uniformContinuous
 
+theorem equicontinuousAt_iInf_rng {α' : Type _} {u : κ → UniformSpace α'} {F : ι → X → α'}
+    {x₀ : X} :
+    @EquicontinuousAt _ _ _ _ (⨅ k, u k) F x₀ ↔ ∀ k, @EquicontinuousAt _ _ _ _ (u k) F x₀ := by
+  simp [@equicontinuousAt_iff_continuousAt _ _ _ _ _, UniformFun.topologicalSpace]
+  unfold ContinuousAt
+  rw [UniformFun.iInf_eq, toTopologicalSpace_iInf, nhds_iInf, tendsto_iInf]
+
+theorem equicontinuous_iInf_rng {α' : Type _} {u : κ → UniformSpace α'} {F : ι → X → α'} :
+    @Equicontinuous _ _ _ _ (⨅ k, u k) F ↔ ∀ k, @Equicontinuous _ _ _ _ (u k) F := by
+  simp_rw [@equicontinuous_iff_continuous _ _ _ _ _, UniformFun.topologicalSpace]
+  rw [UniformFun.iInf_eq, toTopologicalSpace_iInf, continuous_iInf_rng]
+
+theorem uniformEquicontinuous_iInf_rng {α' : Type _} {u : κ → UniformSpace α'} {F : ι → β → α'} :
+    @UniformEquicontinuous _ _ _ (⨅ k, u k) _ F ↔ ∀ k, @UniformEquicontinuous _ _ _ (u k) _ F := by
+  simp_rw [@uniformEquicontinuous_iff_uniformContinuous _ _ _ _]
+  rw [UniformFun.iInf_eq, uniformContinuous_iInf_rng]
+
+theorem equicontinuousAt_iInf_dom {X' : Type _} {t : κ → TopologicalSpace X'} {F : ι → X' → α}
+    {x₀ : X'} {k : κ} (hk : @EquicontinuousAt _ _ _ (t k) _ F x₀) :
+    @EquicontinuousAt _ _ _ (⨅ k, t k) _ F x₀ := by
+  simp [@equicontinuousAt_iff_continuousAt _ _ _ _] at hk ⊢
+  unfold ContinuousAt at hk ⊢
+  rw [nhds_iInf]
+  exact tendsto_iInf' k hk
+
+theorem equicontinuous_iInf_dom {X' : Type _} {t : κ → TopologicalSpace X'} {F : ι → X' → α}
+    {k : κ} (hk : @Equicontinuous _ _ _ (t k) _ F) :
+    @Equicontinuous _ _ _ (⨅ k, t k) _ F := by
+  simp_rw [@equicontinuous_iff_continuous _ _ _ _] at hk ⊢
+  exact continuous_iInf_dom hk
+
+theorem uniform_equicontinuous_infi_dom {β' : Type _} {u : κ → UniformSpace β'} {F : ι → β' → α}
+    {k : κ} (hk : @UniformEquicontinuous _ _ _ _ (u k) F) :
+    @UniformEquicontinuous _ _ _ _ (⨅ k, u k) F := by
+  simp_rw [@uniformEquicontinuous_iff_uniformContinuous _ _ _ _ _] at hk ⊢
+  exact uniformContinuous_iInf_dom hk
+
 -- Porting note: changed from `∃ k (_ : p k), _` to `∃ k, p k ∧ _` since Lean 4 generates the
 -- second one when parsing expressions like `∃ δ > 0, _`.
 theorem Filter.HasBasis.equicontinuousAt_iff_left {κ : Type _} {p : κ → Prop} {s : κ → Set X}
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.uniform_space.equicontinuity
-! leanprover-community/mathlib commit f2ce6086713c78a7f880485f7917ea547a215982
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Topology.UniformSpace.UniformConvergenceTopology
 
+#align_import topology.uniform_space.equicontinuity from "leanprover-community/mathlib"@"f2ce6086713c78a7f880485f7917ea547a215982"
+
 /-!
 # Equicontinuity of a family of functions
 
chore: fix upper/lowercase in comments (#4360)
  • Run a non-interactive version of fix-comments.py on all files.
  • Go through the diff and manually add/discard/edit chunks.
Diff
@@ -371,7 +371,7 @@ theorem UniformInducing.uniformEquicontinuous_iff {F : ι → β → α} {u : α
 
 /-- A version of `EquicontinuousAt.closure` applicable to subsets of types which embed continuously
 into `X → α` with the product topology. It turns out we don't need any other condition on the
-embedding than continuity, but in practice this will mostly be applied to `fun_like` types where
+embedding than continuity, but in practice this will mostly be applied to `FunLike` types where
 the coercion is injective. -/
 theorem EquicontinuousAt.closure' {A : Set Y} {u : Y → X → α} {x₀ : X}
     (hA : EquicontinuousAt (u ∘ (↑) : A → X → α) x₀) (hu : Continuous u) :
chore: tidy various files (#3530)
Diff
@@ -54,12 +54,12 @@ Throughout this file, we use :
 
 We choose to express equicontinuity as a properties of indexed families of functions rather
 than sets of functions for the following reasons:
-- it is really easy to express equicontinuity of `H : set (X → α)` using our setup: it is just
+- it is really easy to express equicontinuity of `H : Set (X → α)` using our setup: it is just
   equicontinuity of the family `(↑) : ↥H → (X → α)`. On the other hand, going the other way around
   would require working with the range of the family, which is always annoying because it
   introduces useless existentials.
 - in most applications, one doesn't work with bare functions but with a more specific hom type
-  `hom`. Equicontinuity of a set `H : set hom` would then have to be expressed as equicontinuity
+  `hom`. Equicontinuity of a set `H : Set hom` would then have to be expressed as equicontinuity
   of `coe_fn '' H`, which is super annoying to work with. This is much simpler with families,
   because equicontinuity of a family `𝓕 : ι → hom` would simply be expressed as equicontinuity
   of `coe_fn ∘ 𝓕`, which doesn't introduce any nasty existentials.
@@ -86,9 +86,7 @@ equicontinuity, uniform convergence, ascoli
 
 section
 
-open UniformSpace Filter Set
-
-open Uniformity Topology UniformConvergence
+open UniformSpace Filter Set Uniformity Topology UniformConvergence
 
 variable {ι κ X Y Z α β γ 𝓕 : Type _} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z]
   [UniformSpace α] [UniformSpace β] [UniformSpace γ]
@@ -100,7 +98,7 @@ def EquicontinuousAt (F : ι → X → α) (x₀ : X) : Prop :=
   ∀ U ∈ 𝓤 α, ∀ᶠ x in 𝓝 x₀, ∀ i, (F i x₀, F i x) ∈ U
 #align equicontinuous_at EquicontinuousAt
 
-/-- We say that a set `H : set (X → α)` of functions is equicontinuous at a point if the family
+/-- We say that a set `H : Set (X → α)` of functions is equicontinuous at a point if the family
 `(↑) : ↥H → (X → α)` is equicontinuous at that point. -/
 protected abbrev Set.EquicontinuousAt (H : Set <| X → α) (x₀ : X) : Prop :=
   EquicontinuousAt ((↑) : H → X → α) x₀
@@ -112,7 +110,7 @@ def Equicontinuous (F : ι → X → α) : Prop :=
   ∀ x₀, EquicontinuousAt F x₀
 #align equicontinuous Equicontinuous
 
-/-- We say that a set `H : set (X → α)` of functions is equicontinuous if the family
+/-- We say that a set `H : Set (X → α)` of functions is equicontinuous if the family
 `(↑) : ↥H → (X → α)` is equicontinuous. -/
 protected abbrev Set.Equicontinuous (H : Set <| X → α) : Prop :=
   Equicontinuous ((↑) : H → X → α)
@@ -125,7 +123,7 @@ def UniformEquicontinuous (F : ι → β → α) : Prop :=
   ∀ U ∈ 𝓤 α, ∀ᶠ xy : β × β in 𝓤 β, ∀ i, (F i xy.1, F i xy.2) ∈ U
 #align uniform_equicontinuous UniformEquicontinuous
 
-/-- We say that a set `H : set (X → α)` of functions is uniformly equicontinuous if the family
+/-- We say that a set `H : Set (X → α)` of functions is uniformly equicontinuous if the family
 `(↑) : ↥H → (X → α)` is uniformly equicontinuous. -/
 protected abbrev Set.UniformEquicontinuous (H : Set <| β → α) : Prop :=
   UniformEquicontinuous ((↑) : H → β → α)
@@ -220,8 +218,8 @@ protected theorem Set.UniformEquicontinuous.mono {H H' : Set <| β → α} (h :
 i.e the family `(↑) : range F → X → α` is equicontinuous at `x₀`. -/
 theorem equicontinuousAt_iff_range {F : ι → X → α} {x₀ : X} :
     EquicontinuousAt F x₀ ↔ EquicontinuousAt ((↑) : range F → X → α) x₀ :=
-  ⟨fun h => by rw [← comp_rangeSplitting F]; exact h.comp _, fun h =>
-    h.comp (rangeFactorization F)⟩
+  ⟨fun h => by rw [← comp_rangeSplitting F]; exact h.comp _,
+   fun h => h.comp (rangeFactorization F)⟩
 #align equicontinuous_at_iff_range equicontinuousAt_iff_range
 
 /-- A family `𝓕 : ι → X → α` is equicontinuous iff `range 𝓕` is equicontinuous,
@@ -382,9 +380,7 @@ theorem EquicontinuousAt.closure' {A : Set Y} {u : Y → X → α} {x₀ : X}
   rcases mem_uniformity_isClosed hU with ⟨V, hV, hVclosed, hVU⟩
   filter_upwards [hA V hV]with x hx
   rw [SetCoe.forall] at *
-  have hx : A ⊆ (fun f => (u f x₀, u f x)) ⁻¹' V := hx
-  -- Porting note: was
-  -- change A ⊆ (fun f => (u f x₀, u f x)) ⁻¹' V at hx
+  change A ⊆ (fun f => (u f x₀, u f x)) ⁻¹' V at hx
   refine' (closure_minimal hx <| hVclosed.preimage <| _).trans (preimage_mono hVU)
   exact Continuous.prod_mk ((continuous_apply x₀).comp hu) ((continuous_apply x).comp hu)
 #align equicontinuous_at.closure' EquicontinuousAt.closure'
@@ -407,7 +403,7 @@ theorem Filter.Tendsto.continuousAt_of_equicontinuousAt {l : Filter ι} [l.NeBot
 
 /-- A version of `Equicontinuous.closure` applicable to subsets of types which embed continuously
 into `X → α` with the product topology. It turns out we don't need any other condition on the
-embedding than continuity, but in practice this will mostly be applied to `fun_like` types where
+embedding than continuity, but in practice this will mostly be applied to `FunLike` types where
 the coercion is injective. -/
 theorem Equicontinuous.closure' {A : Set Y} {u : Y → X → α}
     (hA : Equicontinuous (u ∘ (↑) : A → X → α)) (hu : Continuous u) :
@@ -429,7 +425,7 @@ theorem Filter.Tendsto.continuous_of_equicontinuous_at {l : Filter ι} [l.NeBot]
 
 /-- A version of `UniformEquicontinuous.closure` applicable to subsets of types which embed
 continuously into `β → α` with the product topology. It turns out we don't need any other condition
-on the embedding than continuity, but in practice this will mostly be applied to `fun_like` types
+on the embedding than continuity, but in practice this will mostly be applied to `FunLike` types
 where the coercion is injective. -/
 theorem UniformEquicontinuous.closure' {A : Set Y} {u : Y → β → α}
     (hA : UniformEquicontinuous (u ∘ (↑) : A → β → α)) (hu : Continuous u) :
@@ -439,9 +435,7 @@ theorem UniformEquicontinuous.closure' {A : Set Y} {u : Y → β → α}
   filter_upwards [hA V hV]
   rintro ⟨x, y⟩ hxy
   rw [SetCoe.forall] at *
-  have hxy : A ⊆ (fun f => (u f x, u f y)) ⁻¹' V := hxy
-  -- Porting note: was
-  -- change A ⊆ (fun f => (u f x, u f y)) ⁻¹' V at hxy
+  change A ⊆ (fun f => (u f x, u f y)) ⁻¹' V at hxy
   refine' (closure_minimal hxy <| hVclosed.preimage <| _).trans (preimage_mono hVU)
   exact Continuous.prod_mk ((continuous_apply x).comp hu) ((continuous_apply y).comp hu)
 #align uniform_equicontinuous.closure' UniformEquicontinuous.closure'
feat: port Topology.MetricSpace.Equicontinuity (#2638)

Also changed a few small things in Topology/UniformSpace/Equicontinuity

Diff
@@ -135,7 +135,7 @@ protected abbrev Set.UniformEquicontinuous (H : Set <| β → α) : Prop :=
 only one with `x₀`. -/
 theorem equicontinuousAt_iff_pair {F : ι → X → α} {x₀ : X} :
     EquicontinuousAt F x₀ ↔
-      ∀ U ∈ 𝓤 α, ∃ V ∈ 𝓝 x₀, ∀ (x) (_ : x ∈ V) (y) (_ : y ∈ V) (i), (F i x, F i y) ∈ U := by
+      ∀ U ∈ 𝓤 α, ∃ V ∈ 𝓝 x₀, ∀ x ∈ V, ∀ y ∈ V, ∀ i, (F i x, F i y) ∈ U := by
   constructor <;> intro H U hU
   · rcases comp_symm_mem_uniformity_sets hU with ⟨V, hV, hVsymm, hVU⟩
     refine' ⟨_, H V hV, fun x hx y hy i => hVU (prod_mk_mem_compRel _ (hy i))⟩
@@ -272,9 +272,11 @@ theorem uniformEquicontinuous_iff_uniformContinuous {F : ι → β → α} :
   rfl
 #align uniform_equicontinuous_iff_uniform_continuous uniformEquicontinuous_iff_uniformContinuous
 
+-- Porting note: changed from `∃ k (_ : p k), _` to `∃ k, p k ∧ _` since Lean 4 generates the
+-- second one when parsing expressions like `∃ δ > 0, _`.
 theorem Filter.HasBasis.equicontinuousAt_iff_left {κ : Type _} {p : κ → Prop} {s : κ → Set X}
     {F : ι → X → α} {x₀ : X} (hX : (𝓝 x₀).HasBasis p s) :
-    EquicontinuousAt F x₀ ↔ ∀ U ∈ 𝓤 α, ∃ (k : _)(_ : p k), ∀ x ∈ s k, ∀ i, (F i x₀, F i x) ∈ U := by
+    EquicontinuousAt F x₀ ↔ ∀ U ∈ 𝓤 α, ∃ k, p k ∧ ∀ x ∈ s k, ∀ i, (F i x₀, F i x) ∈ U := by
   rw [equicontinuousAt_iff_continuousAt, ContinuousAt,
     hX.tendsto_iff (UniformFun.hasBasis_nhds ι α _)]
   simp only [Function.comp_apply, mem_setOf_eq, exists_prop]
@@ -289,21 +291,25 @@ theorem Filter.HasBasis.equicontinuousAt_iff_right {κ : Type _} {p : κ → Pro
   rfl
 #align filter.has_basis.equicontinuous_at_iff_right Filter.HasBasis.equicontinuousAt_iff_right
 
+-- Porting note: changed from `∃ k (_ : p k), _` to `∃ k, p k ∧ _` since Lean 4 generates the
+-- second one when parsing expressions like `∃ δ > 0, _`.
 theorem Filter.HasBasis.equicontinuousAt_iff {κ₁ κ₂ : Type _} {p₁ : κ₁ → Prop} {s₁ : κ₁ → Set X}
     {p₂ : κ₂ → Prop} {s₂ : κ₂ → Set (α × α)} {F : ι → X → α} {x₀ : X} (hX : (𝓝 x₀).HasBasis p₁ s₁)
     (hα : (𝓤 α).HasBasis p₂ s₂) :
     EquicontinuousAt F x₀ ↔
-      ∀ k₂, p₂ k₂ → ∃ (k₁ : _)(_ : p₁ k₁), ∀ x ∈ s₁ k₁, ∀ i, (F i x₀, F i x) ∈ s₂ k₂ := by
+      ∀ k₂, p₂ k₂ → ∃ k₁, p₁ k₁ ∧ ∀ x ∈ s₁ k₁, ∀ i, (F i x₀, F i x) ∈ s₂ k₂ := by
   rw [equicontinuousAt_iff_continuousAt, ContinuousAt,
     hX.tendsto_iff (UniformFun.hasBasis_nhds_of_basis ι α _ hα)]
   simp only [Function.comp_apply, mem_setOf_eq, exists_prop]
   rfl
 #align filter.has_basis.equicontinuous_at_iff Filter.HasBasis.equicontinuousAt_iff
 
+-- Porting note: changed from `∃ k (_ : p k), _` to `∃ k, p k ∧ _` since Lean 4 generates the
+-- second one when parsing expressions like `∃ δ > 0, _`.
 theorem Filter.HasBasis.uniformEquicontinuous_iff_left {κ : Type _} {p : κ → Prop}
     {s : κ → Set (β × β)} {F : ι → β → α} (hβ : (𝓤 β).HasBasis p s) :
     UniformEquicontinuous F ↔
-      ∀ U ∈ 𝓤 α, ∃ (k : _)(_ : p k), ∀ x y, (x, y) ∈ s k → ∀ i, (F i x, F i y) ∈ U := by
+      ∀ U ∈ 𝓤 α, ∃ k, p k ∧ ∀ x y, (x, y) ∈ s k → ∀ i, (F i x, F i y) ∈ U := by
   rw [uniformEquicontinuous_iff_uniformContinuous, UniformContinuous,
     hβ.tendsto_iff (UniformFun.hasBasis_uniformity ι α)]
   simp only [Prod.forall, Function.comp_apply, mem_setOf_eq, exists_prop]
@@ -318,11 +324,13 @@ theorem Filter.HasBasis.uniformEquicontinuous_iff_right {κ : Type _} {p : κ 
   rfl
 #align filter.has_basis.uniform_equicontinuous_iff_right Filter.HasBasis.uniformEquicontinuous_iff_right
 
+-- Porting note: changed from `∃ k (_ : p k), _` to `∃ k, p k ∧ _` since Lean 4 generates the
+-- second one when parsing expressions like `∃ δ > 0, _`.
 theorem Filter.HasBasis.uniformEquicontinuous_iff {κ₁ κ₂ : Type _} {p₁ : κ₁ → Prop}
     {s₁ : κ₁ → Set (β × β)} {p₂ : κ₂ → Prop} {s₂ : κ₂ → Set (α × α)} {F : ι → β → α}
     (hβ : (𝓤 β).HasBasis p₁ s₁) (hα : (𝓤 α).HasBasis p₂ s₂) :
     UniformEquicontinuous F ↔
-      ∀ k₂, p₂ k₂ → ∃ (k₁ : _)(_ : p₁ k₁), ∀ x y, (x, y) ∈ s₁ k₁ → ∀ i, (F i x, F i y) ∈ s₂ k₂ := by
+      ∀ k₂, p₂ k₂ → ∃ k₁, p₁ k₁ ∧ ∀ x y, (x, y) ∈ s₁ k₁ → ∀ i, (F i x, F i y) ∈ s₂ k₂ := by
   rw [uniformEquicontinuous_iff_uniformContinuous, UniformContinuous,
     hβ.tendsto_iff (UniformFun.hasBasis_uniformity_of_basis ι α hα)]
   simp only [Prod.forall, Function.comp_apply, mem_setOf_eq, exists_prop]
@@ -334,7 +342,7 @@ theorem Filter.HasBasis.uniformEquicontinuous_iff {κ₁ κ₂ : Type _} {p₁ :
 equicontinuous at `x₀`. -/
 theorem UniformInducing.equicontinuousAt_iff {F : ι → X → α} {x₀ : X} {u : α → β}
     (hu : UniformInducing u) : EquicontinuousAt F x₀ ↔ EquicontinuousAt ((· ∘ ·) u ∘ F) x₀ := by
-  have := (@UniformFun.postcomp_uniformInducing ι _ _ _ _ _ hu).inducing
+  have := (UniformFun.postcomp_uniformInducing (α := ι) hu).inducing
   rw [equicontinuousAt_iff_continuousAt, equicontinuousAt_iff_continuousAt, this.continuousAt_iff]
   rfl
 #align uniform_inducing.equicontinuous_at_iff UniformInducing.equicontinuousAt_iff
@@ -357,7 +365,7 @@ iff the family `𝓕'`, obtained by precomposing each function of `𝓕` by `u`,
 equicontinuous. -/
 theorem UniformInducing.uniformEquicontinuous_iff {F : ι → β → α} {u : α → γ}
     (hu : UniformInducing u) : UniformEquicontinuous F ↔ UniformEquicontinuous ((· ∘ ·) u ∘ F) := by
-  have := @UniformFun.postcomp_uniformInducing ι _ _ _ _ _ hu
+  have := UniformFun.postcomp_uniformInducing (α := ι) hu
   rw [uniformEquicontinuous_iff_uniformContinuous, uniformEquicontinuous_iff_uniformContinuous,
     this.uniformContinuous_iff]
   rfl
@@ -385,7 +393,7 @@ theorem EquicontinuousAt.closure' {A : Set Y} {u : Y → X → α} {x₀ : X}
 also equicontinuous at `x₀`. -/
 theorem EquicontinuousAt.closure {A : Set <| X → α} {x₀ : X} (hA : A.EquicontinuousAt x₀) :
     (closure A).EquicontinuousAt x₀ :=
-  @EquicontinuousAt.closure' _ _ _ _ _ _ _ id _ hA continuous_id
+  EquicontinuousAt.closure' (u := id) hA continuous_id
 #align equicontinuous_at.closure EquicontinuousAt.closure
 
 /-- If `𝓕 : ι → X → α` tends to `f : X → α` *pointwise* along some nontrivial filter, and if the
@@ -442,7 +450,7 @@ theorem UniformEquicontinuous.closure' {A : Set Y} {u : Y → β → α}
 uniformly equicontinuous. -/
 theorem UniformEquicontinuous.closure {A : Set <| β → α} (hA : A.UniformEquicontinuous) :
     (closure A).UniformEquicontinuous :=
-  @UniformEquicontinuous.closure' _ _ _ _ _ _ _ id hA continuous_id
+  UniformEquicontinuous.closure' (u := id) hA continuous_id
 #align uniform_equicontinuous.closure UniformEquicontinuous.closure
 
 /-- If `𝓕 : ι → β → α` tends to `f : β → α` *pointwise* along some nontrivial filter, and if the
feat: port Topology.UniformSpace.Equicontinuity (#2457)

Co-authored-by: RemyDegenne <Remydegenne@gmail.com>

Dependencies 8 + 315

316 files ported (97.5%)
140646 lines ported (96.6%)
Show graph

The unported dependencies are