l3lab/ntp-mathlib huggingface dataset:
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
  

Proof state:
ι : Type u_1
κ : Type u_2
X : Type u_3
Y : Type u_4
Z : Type u_5
α : Type u_6
β : Type u_7
γ : Type u_8
𝓕 : Type u_9
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Z
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
X' : Type u_10
t : κ → TopologicalSpace X'
F : ι → X' → α
x₀ : X'
k : κ
hk : EquicontinuousAt F x₀
⊢ EquicontinuousAt F x₀

Next tactic:
simp? [@equicontinuousAt_iff_continuousAt _ _ _ _] at hk ⊢ says
    simp only [@equicontinuousAt_iff_continuousAt _ _ _ _] at hk ⊢
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
    

Proof state:
ι : Type u_1
κ : Type u_2
X : Type u_3
Y : Type u_4
Z : Type u_5
α : Type u_6
β : Type u_7
γ : Type u_8
𝓕 : Type u_9
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Z
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
X' : Type u_10
t : κ → TopologicalSpace X'
F : ι → X' → α
x₀ : X'
k : κ
hk : EquicontinuousAt F x₀
⊢ EquicontinuousAt F x₀

Next tactic:
simp only [@equicontinuousAt_iff_continuousAt _ _ _ _] at hk ⊢
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 ⊢
  

Proof state:
ι : Type u_1
κ : Type u_2
X : Type u_3
Y : Type u_4
Z : Type u_5
α : Type u_6
β : Type u_7
γ : Type u_8
𝓕 : Type u_9
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Z
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
X' : Type u_10
t : κ → TopologicalSpace X'
F : ι → X' → α
x₀ : X'
k : κ
hk : ContinuousAt (⇑UniformFun.ofFun ∘ Function.swap F) x₀
⊢ ContinuousAt (⇑UniformFun.ofFun ∘ Function.swap F) x₀

Next tactic:
unfold ContinuousAt at hk ⊢
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 ⊢
  

Proof state:
ι : Type u_1
κ : Type u_2
X : Type u_3
Y : Type u_4
Z : Type u_5
α : Type u_6
β : Type u_7
γ : Type u_8
𝓕 : Type u_9
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Z
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
X' : Type u_10
t : κ → TopologicalSpace X'
F : ι → X' → α
x₀ : X'
k : κ
hk : Tendsto (⇑UniformFun.ofFun ∘ Function.swap F) (𝓝 x₀) (𝓝 ((⇑UniformFun.ofFun ∘ Function.swap F) x₀))
⊢ Tendsto (⇑UniformFun.ofFun ∘ Function.swap F) (𝓝 x₀) (𝓝 ((⇑UniformFun.ofFun ∘ Function.swap F) x₀))

Next tactic:
rw [nhds_iInf]
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 ⊢
  rw [nhds_iInf]
  

Proof state:
ι : Type u_1
κ : Type u_2
X : Type u_3
Y : Type u_4
Z : Type u_5
α : Type u_6
β : Type u_7
γ : Type u_8
𝓕 : Type u_9
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Z
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
X' : Type u_10
t : κ → TopologicalSpace X'
F : ι → X' → α
x₀ : X'
k : κ
hk : Tendsto (⇑UniformFun.ofFun ∘ Function.swap F) (𝓝 x₀) (𝓝 ((⇑UniformFun.ofFun ∘ Function.swap F) x₀))
⊢ Tendsto (⇑UniformFun.ofFun ∘ Function.swap F) (⨅ i, 𝓝 x₀) (𝓝 ((⇑UniformFun.ofFun ∘ Function.swap F) x₀))

Next tactic:
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
  

Proof state:
ι : Type u_1
κ : Type u_2
X : Type u_3
Y : Type u_4
Z : Type u_5
α : Type u_6
β : Type u_7
γ : Type u_8
𝓕 : Type u_9
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Z
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
X' : Type u_10
t : κ → TopologicalSpace X'
F : ι → X' → α
k : κ
hk : Equicontinuous F
⊢ Equicontinuous F

Next tactic:
simp_rw [@equicontinuous_iff_continuous _ _ _ _] at 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 ⊢
  

Proof state:
ι : Type u_1
κ : Type u_2
X : Type u_3
Y : Type u_4
Z : Type u_5
α : Type u_6
β : Type u_7
γ : Type u_8
𝓕 : Type u_9
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Z
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
X' : Type u_10
t : κ → TopologicalSpace X'
F : ι → X' → α
k : κ
hk : Continuous (⇑UniformFun.ofFun ∘ Function.swap F)
⊢ Continuous (⇑UniformFun.ofFun ∘ Function.swap F)

Next tactic:
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
  

Proof state:
ι : Type u_1
κ : Type u_2
X : Type u_3
Y : Type u_4
Z : Type u_5
α : Type u_6
β : Type u_7
γ : Type u_8
𝓕 : Type u_9
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Z
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
β' : Type u_10
u : κ → UniformSpace β'
F : ι → β' → α
k : κ
hk : UniformEquicontinuous F
⊢ UniformEquicontinuous F

Next tactic:
simp_rw [@uniformEquicontinuous_iff_uniformContinuous _ _ _ _ _] at 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 ⊢
  

Proof state:
ι : Type u_1
κ : Type u_2
X : Type u_3
Y : Type u_4
Z : Type u_5
α : Type u_6
β : Type u_7
γ : Type u_8
𝓕 : Type u_9
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Z
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
β' : Type u_10
u : κ → UniformSpace β'
F : ι → β' → α
k : κ
hk : UniformContinuous (⇑UniformFun.ofFun ∘ Function.swap F)
⊢ UniformContinuous (⇑UniformFun.ofFun ∘ Function.swap F)

Next tactic:
exact uniformContinuous_iInf_dom hk
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
  

Proof state:
ι : Type u_1
κ✝ : Type u_2
X : Type u_3
Y : Type u_4
Z : Type u_5
α : Type u_6
β : Type u_7
γ : Type u_8
𝓕 : Type u_9
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Z
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
κ : Type u_10
p : κ → Prop
s : κ → Set X
F : ι → X → α
x₀ : X
hX : HasBasis (𝓝 x₀) p s
⊢ EquicontinuousAt F x₀ ↔ ∀ U ∈ 𝓤 α, ∃ k, p k ∧ ∀ x ∈ s k, ∀ (i : ι), (F i x₀, F i x) ∈ U

Next tactic:
rw [equicontinuousAt_iff_continuousAt, ContinuousAt,
    hX.tendsto_iff (UniformFun.hasBasis_nhds ι α _)]
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,
    hX.tendsto_iff (UniformFun.hasBasis_nhds ι α _)]
  

Proof state:
ι : Type u_1
κ✝ : Type u_2
X : Type u_3
Y : Type u_4
Z : Type u_5
α : Type u_6
β : Type u_7
γ : Type u_8
𝓕 : Type u_9
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Z
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
κ : Type u_10
p : κ → Prop
s : κ → Set X
F : ι → X → α
x₀ : X
hX : HasBasis (𝓝 x₀) p s
⊢ (∀ ib ∈ 𝓤 α,
      ∃ ia,
        p ia ∧
          ∀ x ∈ s ia,
            (⇑UniformFun.ofFun ∘ Function.swap F) x ∈
              {g | ((⇑UniformFun.ofFun ∘ Function.swap F) x₀, g) ∈ UniformFun.gen ι α ib}) ↔
    ∀ U ∈ 𝓤 α, ∃ k, p k ∧ ∀ x ∈ s k, ∀ (i : ι), (F i x₀, F i x) ∈ U

Next tactic:
simp only [Function.comp_apply, mem_setOf_eq, exists_prop]
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,
    hX.tendsto_iff (UniformFun.hasBasis_nhds ι α _)]
  simp only [Function.comp_apply, mem_setOf_eq, exists_prop]
  

Proof state:
ι : Type u_1
κ✝ : Type u_2
X : Type u_3
Y : Type u_4
Z : Type u_5
α : Type u_6
β : Type u_7
γ : Type u_8
𝓕 : Type u_9
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Z
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
κ : Type u_10
p : κ → Prop
s : κ → Set X
F : ι → X → α
x₀ : X
hX : HasBasis (𝓝 x₀) p s
⊢ (∀ ib ∈ 𝓤 α,
      ∃ ia,
        p ia ∧
          ∀ x ∈ s ia,
            (UniformFun.ofFun (Function.swap F x₀), UniformFun.ofFun (Function.swap F x)) ∈ UniformFun.gen ι α ib) ↔
    ∀ U ∈ 𝓤 α, ∃ k, p k ∧ ∀ x ∈ s k, ∀ (i : ι), (F i x₀, F i x) ∈ U

Next tactic:
rfl
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
  

Proof state:
ι : Type u_1
κ✝ : Type u_2
X : Type u_3
Y : Type u_4
Z : Type u_5
α : Type u_6
β : Type u_7
γ : Type u_8
𝓕 : Type u_9
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Z
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
κ : Type u_10
p : κ → Prop
s : κ → Set (α × α)
F : ι → X → α
x₀ : X
hα : HasBasis (𝓤 α) p s
⊢ EquicontinuousAt F x₀ ↔ ∀ (k : κ), p k → ∀ᶠ (x : X) in 𝓝 x₀, ∀ (i : ι), (F i x₀, F i x) ∈ s k

Next tactic:
rw [equicontinuousAt_iff_continuousAt, ContinuousAt,
    (UniformFun.hasBasis_nhds_of_basis ι α _ hα).tendsto_right_iff]
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,
    (UniformFun.hasBasis_nhds_of_basis ι α _ hα).tendsto_right_iff]
  

Proof state:
ι : Type u_1
κ✝ : Type u_2
X : Type u_3
Y : Type u_4
Z : Type u_5
α : Type u_6
β : Type u_7
γ : Type u_8
𝓕 : Type u_9
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Z
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
κ : Type u_10
p : κ → Prop
s : κ → Set (α × α)
F : ι → X → α
x₀ : X
hα : HasBasis (𝓤 α) p s
⊢ (∀ (i : κ),
      p i →
        ∀ᶠ (x : X) in 𝓝 x₀,
          (⇑UniformFun.ofFun ∘ Function.swap F) x ∈
            {g | ((⇑UniformFun.ofFun ∘ Function.swap F) x₀, g) ∈ UniformFun.gen ι α (s i)}) ↔
    ∀ (k : κ), p k → ∀ᶠ (x : X) in 𝓝 x₀, ∀ (i : ι), (F i x₀, F i x) ∈ s k

Next tactic:
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₂) :
    EquicontinuousAt F x₀ ↔
      ∀ k₂, p₂ k₂ → ∃ k₁, p₁ k₁ ∧ ∀ x ∈ s₁ k₁, ∀ i, (F i x₀, F i x) ∈ s₂ k₂ := by
  

Proof state:
ι : Type u_1
κ : Type u_2
X : Type u_3
Y : Type u_4
Z : Type u_5
α : Type u_6
β : Type u_7
γ : Type u_8
𝓕 : Type u_9
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Z
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
κ₁ : Type u_10
κ₂ : Type u_11
p₁ : κ₁ → Prop
s₁ : κ₁ → Set X
p₂ : κ₂ → Prop
s₂ : κ₂ → Set (α × α)
F : ι → X → α
x₀ : X
hX : HasBasis (𝓝 x₀) 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₂

Next tactic:
rw [equicontinuousAt_iff_continuousAt, ContinuousAt,
    hX.tendsto_iff (UniformFun.hasBasis_nhds_of_basis ι α _ hα)]
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
  rw [equicontinuousAt_iff_continuousAt, ContinuousAt,
    hX.tendsto_iff (UniformFun.hasBasis_nhds_of_basis ι α _ hα)]
  

Proof state:
ι : Type u_1
κ : Type u_2
X : Type u_3
Y : Type u_4
Z : Type u_5
α : Type u_6
β : Type u_7
γ : Type u_8
𝓕 : Type u_9
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Z
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
κ₁ : Type u_10
κ₂ : Type u_11
p₁ : κ₁ → Prop
s₁ : κ₁ → Set X
p₂ : κ₂ → Prop
s₂ : κ₂ → Set (α × α)
F : ι → X → α
x₀ : X
hX : HasBasis (𝓝 x₀) p₁ s₁
hα : HasBasis (𝓤 α) p₂ s₂
⊢ (∀ (ib : κ₂),
      p₂ ib →
        ∃ ia,
          p₁ ia ∧
            ∀ x ∈ s₁ ia,
              (⇑UniformFun.ofFun ∘ Function.swap F) x ∈
                {g | ((⇑UniformFun.ofFun ∘ Function.swap F) x₀, g) ∈ UniformFun.gen ι α (s₂ ib)}) ↔
    ∀ (k₂ : κ₂), p₂ k₂ → ∃ k₁, p₁ k₁ ∧ ∀ x ∈ s₁ k₁, ∀ (i : ι), (F i x₀, F i x) ∈ s₂ k₂

Next tactic:
simp only [Function.comp_apply, mem_setOf_eq, exists_prop]
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
  rw [equicontinuousAt_iff_continuousAt, ContinuousAt,
    hX.tendsto_iff (UniformFun.hasBasis_nhds_of_basis ι α _ hα)]
  simp only [Function.comp_apply, mem_setOf_eq, exists_prop]
  

Proof state:
ι : Type u_1
κ : Type u_2
X : Type u_3
Y : Type u_4
Z : Type u_5
α : Type u_6
β : Type u_7
γ : Type u_8
𝓕 : Type u_9
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Z
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
κ₁ : Type u_10
κ₂ : Type u_11
p₁ : κ₁ → Prop
s₁ : κ₁ → Set X
p₂ : κ₂ → Prop
s₂ : κ₂ → Set (α × α)
F : ι → X → α
x₀ : X
hX : HasBasis (𝓝 x₀) p₁ s₁
hα : HasBasis (𝓤 α) p₂ s₂
⊢ (∀ (ib : κ₂),
      p₂ ib →
        ∃ ia,
          p₁ ia ∧
            ∀ x ∈ s₁ ia,
              (UniformFun.ofFun (Function.swap F x₀), UniformFun.ofFun (Function.swap F x)) ∈
                UniformFun.gen ι α (s₂ ib)) ↔
    ∀ (k₂ : κ₂), p₂ k₂ → ∃ k₁, p₁ k₁ ∧ ∀ x ∈ s₁ k₁, ∀ (i : ι), (F i x₀, F i x) ∈ s₂ k₂

Next tactic:
rfl
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
  

Proof state:
ι : Type u_1
κ✝ : Type u_2
X : Type u_3
Y : Type u_4
Z : Type u_5
α : Type u_6
β : Type u_7
γ : Type u_8
𝓕 : Type u_9
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Z
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
κ : Type u_10
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

Next tactic:
rw [uniformEquicontinuous_iff_uniformContinuous, UniformContinuous,
    hβ.tendsto_iff (UniformFun.hasBasis_uniformity ι α)]
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
  rw [uniformEquicontinuous_iff_uniformContinuous, UniformContinuous,
    hβ.tendsto_iff (UniformFun.hasBasis_uniformity ι α)]
  

Proof state:
ι : Type u_1
κ✝ : Type u_2
X : Type u_3
Y : Type u_4
Z : Type u_5
α : Type u_6
β : Type u_7
γ : Type u_8
𝓕 : Type u_9
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Z
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
κ : Type u_10
p : κ → Prop
s : κ → Set (β × β)
F : ι → β → α
hβ : HasBasis (𝓤 β) p s
⊢ (∀ ib ∈ 𝓤 α,
      ∃ ia,
        p ia ∧
          ∀ x ∈ s ia,
            ((⇑UniformFun.ofFun ∘ Function.swap F) x.1, (⇑UniformFun.ofFun ∘ Function.swap F) x.2) ∈
              UniformFun.gen ι α ib) ↔
    ∀ U ∈ 𝓤 α, ∃ k, p k ∧ ∀ (x y : β), (x, y) ∈ s k → ∀ (i : ι), (F i x, F i y) ∈ U

Next tactic:
simp only [Prod.forall, Function.comp_apply, mem_setOf_eq, exists_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
  rw [uniformEquicontinuous_iff_uniformContinuous, UniformContinuous,
    hβ.tendsto_iff (UniformFun.hasBasis_uniformity ι α)]
  simp only [Prod.forall, Function.comp_apply, mem_setOf_eq, exists_prop]
  

Proof state:
ι : Type u_1
κ✝ : Type u_2
X : Type u_3
Y : Type u_4
Z : Type u_5
α : Type u_6
β : Type u_7
γ : Type u_8
𝓕 : Type u_9
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Z
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
κ : Type u_10
p : κ → Prop
s : κ → Set (β × β)
F : ι → β → α
hβ : HasBasis (𝓤 β) p s
⊢ (∀ ib ∈ 𝓤 α,
      ∃ ia,
        p ia ∧
          ∀ (a b : β),
            (a, b) ∈ s ia →
              (UniformFun.ofFun (Function.swap F a), UniformFun.ofFun (Function.swap F b)) ∈ UniformFun.gen ι α ib) ↔
    ∀ U ∈ 𝓤 α, ∃ k, p k ∧ ∀ (x y : β), (x, y) ∈ s k → ∀ (i : ι), (F i x, F i y) ∈ U

Next tactic:
rfl
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
  

Proof state:
ι : Type u_1
κ✝ : Type u_2
X : Type u_3
Y : Type u_4
Z : Type u_5
α : Type u_6
β : Type u_7
γ : Type u_8
𝓕 : Type u_9
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Z
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
κ : Type u_10
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

Next tactic:
rw [uniformEquicontinuous_iff_uniformContinuous, UniformContinuous,
    (UniformFun.hasBasis_uniformity_of_basis ι α hα).tendsto_right_iff]
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,
    (UniformFun.hasBasis_uniformity_of_basis ι α hα).tendsto_right_iff]
  

Proof state:
ι : Type u_1
κ✝ : Type u_2
X : Type u_3
Y : Type u_4
Z : Type u_5
α : Type u_6
β : Type u_7
γ : Type u_8
𝓕 : Type u_9
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Z
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
κ : Type u_10
p : κ → Prop
s : κ → Set (α × α)
F : ι → β → α
hα : HasBasis (𝓤 α) p s
⊢ (∀ (i : κ),
      p i →
        ∀ᶠ (x : β × β) in 𝓤 β,
          ((⇑UniformFun.ofFun ∘ Function.swap F) x.1, (⇑UniformFun.ofFun ∘ Function.swap F) x.2) ∈
            (UniformFun.gen ι α ∘ s) i) ↔
    ∀ (k : κ), p k → ∀ᶠ (xy : β × β) in 𝓤 β, ∀ (i : ι), (F i xy.1, F i xy.2) ∈ s k

Next tactic:
rfl
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
  

Proof state:
ι : Type u_1
κ : Type u_2
X : Type u_3
Y : Type u_4
Z : Type u_5
α : Type u_6
β : Type u_7
γ : Type u_8
𝓕 : Type u_9
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Z
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
κ₁ : Type u_10
κ₂ : Type u_11
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₂

Next tactic:
rw [uniformEquicontinuous_iff_uniformContinuous, UniformContinuous,
    hβ.tendsto_iff (UniformFun.hasBasis_uniformity_of_basis ι α hα)]
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
  rw [uniformEquicontinuous_iff_uniformContinuous, UniformContinuous,
    hβ.tendsto_iff (UniformFun.hasBasis_uniformity_of_basis ι α hα)]
  

Proof state:
ι : Type u_1
κ : Type u_2
X : Type u_3
Y : Type u_4
Z : Type u_5
α : Type u_6
β : Type u_7
γ : Type u_8
𝓕 : Type u_9
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Z
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
κ₁ : Type u_10
κ₂ : Type u_11
p₁ : κ₁ → Prop
s₁ : κ₁ → Set (β × β)
p₂ : κ₂ → Prop
s₂ : κ₂ → Set (α × α)
F : ι → β → α
hβ : HasBasis (𝓤 β) p₁ s₁
hα : HasBasis (𝓤 α) p₂ s₂
⊢ (∀ (ib : κ₂),
      p₂ ib →
        ∃ ia,
          p₁ ia ∧
            ∀ x ∈ s₁ ia,
              ((⇑UniformFun.ofFun ∘ Function.swap F) x.1, (⇑UniformFun.ofFun ∘ Function.swap F) x.2) ∈
                (UniformFun.gen ι α ∘ s₂) ib) ↔
    ∀ (k₂ : κ₂), p₂ k₂ → ∃ k₁, p₁ k₁ ∧ ∀ (x y : β), (x, y) ∈ s₁ k₁ → ∀ (i : ι), (F i x, F i y) ∈ s₂ k₂

Next tactic:
simp only [Prod.forall, Function.comp_apply, mem_setOf_eq, exists_prop]