Theorem: difference_quotients_converge_uniformly
File: Mathlib/Analysis/Calculus/UniformLimitsDeriv.lean

tactic: let : NormedSpace ℝ E
state_before: ι : Type u_3
l : Filter ι
E : Type u_1
inst✝⁴ : NormedAddCommGroup E
𝕜 : Type u_4
inst✝³ : IsROrC 𝕜
inst✝² : NormedSpace 𝕜 E
G : Type u_2
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : ι → E → G
g : E → G
f' : ι → E → E →L[𝕜] G
g' : E → E →L[𝕜] G
x : E
hf' : TendstoUniformlyOnFilter f' g' l (𝓝 x)
hf : ∀ᶠ (n : ι × E) in l ×ˢ 𝓝 x, HasFDerivAt (f n.fst) (f' n.fst n.snd) n.snd
hfg : ∀ᶠ (y : E) in 𝓝 x, Tendsto (fun n => f n y) l (𝓝 (g y))
⊢ TendstoUniformlyOnFilter (fun n y => (↑‖y - x‖)⁻¹ • (f n y - f n x)) (fun y => (↑‖y - x‖)⁻¹ • (g y - g x)) l (𝓝 x)

tactic: exact NormedSpace.restrictScalars ℝ 𝕜 _
state_before: case this
ι : Type u_3
l : Filter ι
E : Type u_1
inst✝⁴ : NormedAddCommGroup E
𝕜 : Type u_4
inst✝³ : IsROrC 𝕜
inst✝² : NormedSpace 𝕜 E
G : Type u_2
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : ι → E → G
g : E → G
f' : ι → E → E →L[𝕜] G
g' : E → E →L[𝕜] G
x : E
hf' : TendstoUniformlyOnFilter f' g' l (𝓝 x)
hf : ∀ᶠ (n : ι × E) in l ×ˢ 𝓝 x, HasFDerivAt (f n.fst) (f' n.fst n.snd) n.snd
hfg : ∀ᶠ (y : E) in 𝓝 x, Tendsto (fun n => f n y) l (𝓝 (g y))
⊢ NormedSpace ℝ E

ι : Type u_3
l : Filter ι
E : Type u_1
inst✝⁴ : NormedAddCommGroup E
𝕜 : Type u_4
inst✝³ : IsROrC 𝕜
inst✝² : NormedSpace 𝕜 E
G : Type u_2
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : ι → E → G
g : E → G
f' : ι → E → E →L[𝕜] G
g' : E → E →L[𝕜] G
x : E
hf' : TendstoUniformlyOnFilter f' g' l (𝓝 x)
hf : ∀ᶠ (n : ι × E) in l ×ˢ 𝓝 x, HasFDerivAt (f n.fst) (f' n.fst n.snd) n.snd
hfg : ∀ᶠ (y : E) in 𝓝 x, Tendsto (fun n => f n y) l (𝓝 (g y))
this : NormedSpace ℝ E := ?this
⊢ TendstoUniformlyOnFilter (fun n y => (↑‖y - x‖)⁻¹ • (f n y - f n x)) (fun y => (↑‖y - x‖)⁻¹ • (g y - g x)) l (𝓝 x)

tactic: rcases eq_or_ne l ⊥ with (hl | hl)
state_before: ι : Type u_3
l : Filter ι
E : Type u_1
inst✝⁴ : NormedAddCommGroup E
𝕜 : Type u_4
inst✝³ : IsROrC 𝕜
inst✝² : NormedSpace 𝕜 E
G : Type u_2
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : ι → E → G
g : E → G
f' : ι → E → E →L[𝕜] G
g' : E → E →L[𝕜] G
x : E
hf' : TendstoUniformlyOnFilter f' g' l (𝓝 x)
hf : ∀ᶠ (n : ι × E) in l ×ˢ 𝓝 x, HasFDerivAt (f n.fst) (f' n.fst n.snd) n.snd
hfg : ∀ᶠ (y : E) in 𝓝 x, Tendsto (fun n => f n y) l (𝓝 (g y))
this : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
⊢ TendstoUniformlyOnFilter (fun n y => (↑‖y - x‖)⁻¹ • (f n y - f n x)) (fun y => (↑‖y - x‖)⁻¹ • (g y - g x)) l (𝓝 x)

tactic: haveI : NeBot l := ⟨hl⟩
state_before: case inr
ι : Type u_3
l : Filter ι
E : Type u_1
inst✝⁴ : NormedAddCommGroup E
𝕜 : Type u_4
inst✝³ : IsROrC 𝕜
inst✝² : NormedSpace 𝕜 E
G : Type u_2
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : ι → E → G
g : E → G
f' : ι → E → E →L[𝕜] G
g' : E → E →L[𝕜] G
x : E
hf' : TendstoUniformlyOnFilter f' g' l (𝓝 x)
hf : ∀ᶠ (n : ι × E) in l ×ˢ 𝓝 x, HasFDerivAt (f n.fst) (f' n.fst n.snd) n.snd
hfg : ∀ᶠ (y : E) in 𝓝 x, Tendsto (fun n => f n y) l (𝓝 (g y))
this : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
hl : l ≠ ⊥
⊢ TendstoUniformlyOnFilter (fun n y => (↑‖y - x‖)⁻¹ • (f n y - f n x)) (fun y => (↑‖y - x‖)⁻¹ • (g y - g x)) l (𝓝 x)

tactic: refine'
  UniformCauchySeqOnFilter.tendstoUniformlyOnFilter_of_tendsto _
    ((hfg.and (eventually_const.mpr hfg.self_of_nhds)).mono fun y hy =>
      (hy.1.sub hy.2).const_smul _)
state_before: case inr
ι : Type u_3
l : Filter ι
E : Type u_1
inst✝⁴ : NormedAddCommGroup E
𝕜 : Type u_4
inst✝³ : IsROrC 𝕜
inst✝² : NormedSpace 𝕜 E
G : Type u_2
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : ι → E → G
g : E → G
f' : ι → E → E →L[𝕜] G
g' : E → E →L[𝕜] G
x : E
hf' : TendstoUniformlyOnFilter f' g' l (𝓝 x)
hf : ∀ᶠ (n : ι × E) in l ×ˢ 𝓝 x, HasFDerivAt (f n.fst) (f' n.fst n.snd) n.snd
hfg : ∀ᶠ (y : E) in 𝓝 x, Tendsto (fun n => f n y) l (𝓝 (g y))
this✝ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
hl : l ≠ ⊥
this : NeBot l
⊢ TendstoUniformlyOnFilter (fun n y => (↑‖y - x‖)⁻¹ • (f n y - f n x)) (fun y => (↑‖y - x‖)⁻¹ • (g y - g x)) l (𝓝 x)

tactic: rw [SeminormedAddGroup.uniformCauchySeqOnFilter_iff_tendstoUniformlyOnFilter_zero]
state_before: case inr
ι : Type u_3
l : Filter ι
E : Type u_1
inst✝⁴ : NormedAddCommGroup E
𝕜 : Type u_4
inst✝³ : IsROrC 𝕜
inst✝² : NormedSpace 𝕜 E
G : Type u_2
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : ι → E → G
g : E → G
f' : ι → E → E →L[𝕜] G
g' : E → E →L[𝕜] G
x : E
hf' : TendstoUniformlyOnFilter f' g' l (𝓝 x)
hf : ∀ᶠ (n : ι × E) in l ×ˢ 𝓝 x, HasFDerivAt (f n.fst) (f' n.fst n.snd) n.snd
hfg : ∀ᶠ (y : E) in 𝓝 x, Tendsto (fun n => f n y) l (𝓝 (g y))
this✝ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
hl : l ≠ ⊥
this : NeBot l
⊢ UniformCauchySeqOnFilter (fun n y => (↑‖y - x‖)⁻¹ • (f n y - f n x)) l (𝓝 x)

tactic: rw [Metric.tendstoUniformlyOnFilter_iff]
state_before: case inr
ι : Type u_3
l : Filter ι
E : Type u_1
inst✝⁴ : NormedAddCommGroup E
𝕜 : Type u_4
inst✝³ : IsROrC 𝕜
inst✝² : NormedSpace 𝕜 E
G : Type u_2
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : ι → E → G
g : E → G
f' : ι → E → E →L[𝕜] G
g' : E → E →L[𝕜] G
x : E
hf' : TendstoUniformlyOnFilter f' g' l (𝓝 x)
hf : ∀ᶠ (n : ι × E) in l ×ˢ 𝓝 x, HasFDerivAt (f n.fst) (f' n.fst n.snd) n.snd
hfg : ∀ᶠ (y : E) in 𝓝 x, Tendsto (fun n => f n y) l (𝓝 (g y))
this✝ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
hl : l ≠ ⊥
this : NeBot l
⊢ TendstoUniformlyOnFilter (fun n z => (↑‖z - x‖)⁻¹ • (f n.fst z - f n.fst x) - (↑‖z - x‖)⁻¹ • (f n.snd z - f n.snd x))
    0 (l ×ˢ l) (𝓝 x)

tactic: have hfg' := hf'.uniformCauchySeqOnFilter
state_before: case inr
ι : Type u_3
l : Filter ι
E : Type u_1
inst✝⁴ : NormedAddCommGroup E
𝕜 : Type u_4
inst✝³ : IsROrC 𝕜
inst✝² : NormedSpace 𝕜 E
G : Type u_2
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : ι → E → G
g : E → G
f' : ι → E → E →L[𝕜] G
g' : E → E →L[𝕜] G
x : E
hf' : TendstoUniformlyOnFilter f' g' l (𝓝 x)
hf : ∀ᶠ (n : ι × E) in l ×ˢ 𝓝 x, HasFDerivAt (f n.fst) (f' n.fst n.snd) n.snd
hfg : ∀ᶠ (y : E) in 𝓝 x, Tendsto (fun n => f n y) l (𝓝 (g y))
this✝ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
hl : l ≠ ⊥
this : NeBot l
⊢ ∀ (ε : ℝ),
    ε > 0 →
      ∀ᶠ (n : (ι × ι) × E) in (l ×ˢ l) ×ˢ 𝓝 x,
        dist (OfNat.ofNat 0 n.snd)
            ((↑‖n.snd - x‖)⁻¹ • (f n.fst.fst n.snd - f n.fst.fst x) -
              (↑‖n.snd - x‖)⁻¹ • (f n.fst.snd n.snd - f n.fst.snd x)) <
          ε

tactic: rw [SeminormedAddGroup.uniformCauchySeqOnFilter_iff_tendstoUniformlyOnFilter_zero] at hfg'
state_before: case inr
ι : Type u_3
l : Filter ι
E : Type u_1
inst✝⁴ : NormedAddCommGroup E
𝕜 : Type u_4
inst✝³ : IsROrC 𝕜
inst✝² : NormedSpace 𝕜 E
G : Type u_2
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : ι → E → G
g : E → G
f' : ι → E → E →L[𝕜] G
g' : E → E →L[𝕜] G
x : E
hf' : TendstoUniformlyOnFilter f' g' l (𝓝 x)
hf : ∀ᶠ (n : ι × E) in l ×ˢ 𝓝 x, HasFDerivAt (f n.fst) (f' n.fst n.snd) n.snd
hfg : ∀ᶠ (y : E) in 𝓝 x, Tendsto (fun n => f n y) l (𝓝 (g y))
this✝ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
hl : l ≠ ⊥
this : NeBot l
hfg' : UniformCauchySeqOnFilter f' l (𝓝 x)
⊢ ∀ (ε : ℝ),
    ε > 0 →
      ∀ᶠ (n : (ι × ι) × E) in (l ×ˢ l) ×ˢ 𝓝 x,
        dist (OfNat.ofNat 0 n.snd)
            ((↑‖n.snd - x‖)⁻¹ • (f n.fst.fst n.snd - f n.fst.fst x) -
              (↑‖n.snd - x‖)⁻¹ • (f n.fst.snd n.snd - f n.fst.snd x)) <
          ε

tactic: rw [Metric.tendstoUniformlyOnFilter_iff] at hfg'
state_before: case inr
ι : Type u_3
l : Filter ι
E : Type u_1
inst✝⁴ : NormedAddCommGroup E
𝕜 : Type u_4
inst✝³ : IsROrC 𝕜
inst✝² : NormedSpace 𝕜 E
G : Type u_2
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : ι → E → G
g : E → G
f' : ι → E → E →L[𝕜] G
g' : E → E →L[𝕜] G
x : E
hf' : TendstoUniformlyOnFilter f' g' l (𝓝 x)
hf : ∀ᶠ (n : ι × E) in l ×ˢ 𝓝 x, HasFDerivAt (f n.fst) (f' n.fst n.snd) n.snd
hfg : ∀ᶠ (y : E) in 𝓝 x, Tendsto (fun n => f n y) l (𝓝 (g y))
this✝ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
hl : l ≠ ⊥
this : NeBot l
hfg' : TendstoUniformlyOnFilter (fun n z => f' n.fst z - f' n.snd z) 0 (l ×ˢ l) (𝓝 x)
⊢ ∀ (ε : ℝ),
    ε > 0 →
      ∀ᶠ (n : (ι × ι) × E) in (l ×ˢ l) ×ˢ 𝓝 x,
        dist (OfNat.ofNat 0 n.snd)
            ((↑‖n.snd - x‖)⁻¹ • (f n.fst.fst n.snd - f n.fst.fst x) -
              (↑‖n.snd - x‖)⁻¹ • (f n.fst.snd n.snd - f n.fst.snd x)) <
          ε

tactic: intro ε hε
state_before: case inr
ι : Type u_3
l : Filter ι
E : Type u_1
inst✝⁴ : NormedAddCommGroup E
𝕜 : Type u_4
inst✝³ : IsROrC 𝕜
inst✝² : NormedSpace 𝕜 E
G : Type u_2
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : ι → E → G
g : E → G
f' : ι → E → E →L[𝕜] G
g' : E → E →L[𝕜] G
x : E
hf' : TendstoUniformlyOnFilter f' g' l (𝓝 x)
hf : ∀ᶠ (n : ι × E) in l ×ˢ 𝓝 x, HasFDerivAt (f n.fst) (f' n.fst n.snd) n.snd
hfg : ∀ᶠ (y : E) in 𝓝 x, Tendsto (fun n => f n y) l (𝓝 (g y))
this✝ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
hl : l ≠ ⊥
this : NeBot l
hfg' :
  ∀ (ε : ℝ),
    ε > 0 →
      ∀ᶠ (n : (ι × ι) × E) in (l ×ˢ l) ×ˢ 𝓝 x, dist (OfNat.ofNat 0 n.snd) (f' n.fst.fst n.snd - f' n.fst.snd n.snd) < ε
⊢ ∀ (ε : ℝ),
    ε > 0 →
      ∀ᶠ (n : (ι × ι) × E) in (l ×ˢ l) ×ˢ 𝓝 x,
        dist (OfNat.ofNat 0 n.snd)
            ((↑‖n.snd - x‖)⁻¹ • (f n.fst.fst n.snd - f n.fst.fst x) -
              (↑‖n.snd - x‖)⁻¹ • (f n.fst.snd n.snd - f n.fst.snd x)) <
          ε

tactic: obtain ⟨q, hqpos, hqε⟩ := exists_pos_rat_lt hε
state_before: case inr
ι : Type u_3
l : Filter ι
E : Type u_1
inst✝⁴ : NormedAddCommGroup E
𝕜 : Type u_4
inst✝³ : IsROrC 𝕜
inst✝² : NormedSpace 𝕜 E
G : Type u_2
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : ι → E → G
g : E → G
f' : ι → E → E →L[𝕜] G
g' : E → E →L[𝕜] G
x : E
hf' : TendstoUniformlyOnFilter f' g' l (𝓝 x)
hf : ∀ᶠ (n : ι × E) in l ×ˢ 𝓝 x, HasFDerivAt (f n.fst) (f' n.fst n.snd) n.snd
hfg : ∀ᶠ (y : E) in 𝓝 x, Tendsto (fun n => f n y) l (𝓝 (g y))
this✝ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
hl : l ≠ ⊥
this : NeBot l
hfg' :
  ∀ (ε : ℝ),
    ε > 0 →
      ∀ᶠ (n : (ι × ι) × E) in (l ×ˢ l) ×ˢ 𝓝 x, dist (OfNat.ofNat 0 n.snd) (f' n.fst.fst n.snd - f' n.fst.snd n.snd) < ε
ε : ℝ
hε : ε > 0
⊢ ∀ᶠ (n : (ι × ι) × E) in (l ×ˢ l) ×ˢ 𝓝 x,
    dist (OfNat.ofNat 0 n.snd)
        ((↑‖n.snd - x‖)⁻¹ • (f n.fst.fst n.snd - f n.fst.fst x) -
          (↑‖n.snd - x‖)⁻¹ • (f n.fst.snd n.snd - f n.fst.snd x)) <
      ε

tactic: specialize hfg' (q : ℝ) (by simp [hqpos])
state_before: case inr.intro.intro
ι : Type u_3
l : Filter ι
E : Type u_1
inst✝⁴ : NormedAddCommGroup E
𝕜 : Type u_4
inst✝³ : IsROrC 𝕜
inst✝² : NormedSpace 𝕜 E
G : Type u_2
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : ι → E → G
g : E → G
f' : ι → E → E →L[𝕜] G
g' : E → E →L[𝕜] G
x : E
hf' : TendstoUniformlyOnFilter f' g' l (𝓝 x)
hf : ∀ᶠ (n : ι × E) in l ×ˢ 𝓝 x, HasFDerivAt (f n.fst) (f' n.fst n.snd) n.snd
hfg : ∀ᶠ (y : E) in 𝓝 x, Tendsto (fun n => f n y) l (𝓝 (g y))
this✝ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
hl : l ≠ ⊥
this : NeBot l
hfg' :
  ∀ (ε : ℝ),
    ε > 0 →
      ∀ᶠ (n : (ι × ι) × E) in (l ×ˢ l) ×ˢ 𝓝 x, dist (OfNat.ofNat 0 n.snd) (f' n.fst.fst n.snd - f' n.fst.snd n.snd) < ε
ε : ℝ
hε : ε > 0
q : ℚ
hqpos : 0 < q
hqε : ↑q < ε
⊢ ∀ᶠ (n : (ι × ι) × E) in (l ×ˢ l) ×ˢ 𝓝 x,
    dist (OfNat.ofNat 0 n.snd)
        ((↑‖n.snd - x‖)⁻¹ • (f n.fst.fst n.snd - f n.fst.fst x) -
          (↑‖n.snd - x‖)⁻¹ • (f n.fst.snd n.snd - f n.fst.snd x)) <
      ε

tactic: have := (tendsto_swap4_prod.eventually (hf.prod_mk hf)).diag_of_prod_right
state_before: case inr.intro.intro
ι : Type u_3
l : Filter ι
E : Type u_1
inst✝⁴ : NormedAddCommGroup E
𝕜 : Type u_4
inst✝³ : IsROrC 𝕜
inst✝² : NormedSpace 𝕜 E
G : Type u_2
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : ι → E → G
g : E → G
f' : ι → E → E →L[𝕜] G
g' : E → E →L[𝕜] G
x : E
hf' : TendstoUniformlyOnFilter f' g' l (𝓝 x)
hf : ∀ᶠ (n : ι × E) in l ×ˢ 𝓝 x, HasFDerivAt (f n.fst) (f' n.fst n.snd) n.snd
hfg : ∀ᶠ (y : E) in 𝓝 x, Tendsto (fun n => f n y) l (𝓝 (g y))
this✝ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
hl : l ≠ ⊥
this : NeBot l
ε : ℝ
hε : ε > 0
q : ℚ
hqpos : 0 < q
hqε : ↑q < ε
hfg' :
  ∀ᶠ (n : (ι × ι) × E) in (l ×ˢ l) ×ˢ 𝓝 x, dist (OfNat.ofNat 0 n.snd) (f' n.fst.fst n.snd - f' n.fst.snd n.snd) < ↑q
⊢ ∀ᶠ (n : (ι × ι) × E) in (l ×ˢ l) ×ˢ 𝓝 x,
    dist (OfNat.ofNat 0 n.snd)
        ((↑‖n.snd - x‖)⁻¹ • (f n.fst.fst n.snd - f n.fst.fst x) -
          (↑‖n.snd - x‖)⁻¹ • (f n.fst.snd n.snd - f n.fst.snd x)) <
      ε

tactic: obtain ⟨a, b, c, d, e⟩ := eventually_prod_iff.1 (hfg'.and this)
state_before: case inr.intro.intro
ι : Type u_3
l : Filter ι
E : Type u_1
inst✝⁴ : NormedAddCommGroup E
𝕜 : Type u_4
inst✝³ : IsROrC 𝕜
inst✝² : NormedSpace 𝕜 E
G : Type u_2
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : ι → E → G
g : E → G
f' : ι → E → E →L[𝕜] G
g' : E → E →L[𝕜] G
x : E
hf' : TendstoUniformlyOnFilter f' g' l (𝓝 x)
hf : ∀ᶠ (n : ι × E) in l ×ˢ 𝓝 x, HasFDerivAt (f n.fst) (f' n.fst n.snd) n.snd
hfg : ∀ᶠ (y : E) in 𝓝 x, Tendsto (fun n => f n y) l (𝓝 (g y))
this✝¹ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
hl : l ≠ ⊥
this✝ : NeBot l
ε : ℝ
hε : ε > 0
q : ℚ
hqpos : 0 < q
hqε : ↑q < ε
hfg' :
  ∀ᶠ (n : (ι × ι) × E) in (l ×ˢ l) ×ˢ 𝓝 x, dist (OfNat.ofNat 0 n.snd) (f' n.fst.fst n.snd - f' n.fst.snd n.snd) < ↑q
this :
  ∀ᶠ (x : (ι × ι) × E) in (l ×ˢ l) ×ˢ 𝓝 x,
    HasFDerivAt
        (f
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).fst.fst)
        (f'
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).fst.fst
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).fst.snd)
        (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
              (x.fst, x.snd, x.snd).snd.snd).fst.snd ∧
      HasFDerivAt
        (f
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).snd.fst)
        (f'
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).snd.fst
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).snd.snd)
        (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
              (x.fst, x.snd, x.snd).snd.snd).snd.snd
⊢ ∀ᶠ (n : (ι × ι) × E) in (l ×ˢ l) ×ˢ 𝓝 x,
    dist (OfNat.ofNat 0 n.snd)
        ((↑‖n.snd - x‖)⁻¹ • (f n.fst.fst n.snd - f n.fst.fst x) -
          (↑‖n.snd - x‖)⁻¹ • (f n.fst.snd n.snd - f n.fst.snd x)) <
      ε

tactic: obtain ⟨r, hr, hr'⟩ := Metric.nhds_basis_ball.eventually_iff.mp d
state_before: case inr.intro.intro.intro.intro.intro.intro
ι : Type u_3
l : Filter ι
E : Type u_1
inst✝⁴ : NormedAddCommGroup E
𝕜 : Type u_4
inst✝³ : IsROrC 𝕜
inst✝² : NormedSpace 𝕜 E
G : Type u_2
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : ι → E → G
g : E → G
f' : ι → E → E →L[𝕜] G
g' : E → E →L[𝕜] G
x : E
hf' : TendstoUniformlyOnFilter f' g' l (𝓝 x)
hf : ∀ᶠ (n : ι × E) in l ×ˢ 𝓝 x, HasFDerivAt (f n.fst) (f' n.fst n.snd) n.snd
hfg : ∀ᶠ (y : E) in 𝓝 x, Tendsto (fun n => f n y) l (𝓝 (g y))
this✝¹ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
hl : l ≠ ⊥
this✝ : NeBot l
ε : ℝ
hε : ε > 0
q : ℚ
hqpos : 0 < q
hqε : ↑q < ε
hfg' :
  ∀ᶠ (n : (ι × ι) × E) in (l ×ˢ l) ×ˢ 𝓝 x, dist (OfNat.ofNat 0 n.snd) (f' n.fst.fst n.snd - f' n.fst.snd n.snd) < ↑q
this :
  ∀ᶠ (x : (ι × ι) × E) in (l ×ˢ l) ×ˢ 𝓝 x,
    HasFDerivAt
        (f
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).fst.fst)
        (f'
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).fst.fst
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).fst.snd)
        (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
              (x.fst, x.snd, x.snd).snd.snd).fst.snd ∧
      HasFDerivAt
        (f
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).snd.fst)
        (f'
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).snd.fst
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).snd.snd)
        (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
              (x.fst, x.snd, x.snd).snd.snd).snd.snd
a : ι × ι → Prop
b : ∀ᶠ (x : ι × ι) in l ×ˢ l, a x
c : E → Prop
d : ∀ᶠ (y : E) in 𝓝 x, c y
e :
  ∀ {x : ι × ι},
    a x →
      ∀ {y : E},
        c y →
          dist (OfNat.ofNat 0 (x, y).snd) (f' (x, y).fst.fst (x, y).snd - f' (x, y).fst.snd (x, y).snd) < ↑q ∧
            HasFDerivAt
                (f
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.fst)
                (f'
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.fst
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.snd)
                ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                      ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                      ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.snd ∧
              HasFDerivAt
                (f
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.fst)
                (f'
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.fst
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.snd)
                ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                      ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                      ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.snd
⊢ ∀ᶠ (n : (ι × ι) × E) in (l ×ˢ l) ×ˢ 𝓝 x,
    dist (OfNat.ofNat 0 n.snd)
        ((↑‖n.snd - x‖)⁻¹ • (f n.fst.fst n.snd - f n.fst.fst x) -
          (↑‖n.snd - x‖)⁻¹ • (f n.fst.snd n.snd - f n.fst.snd x)) <
      ε

tactic: rw [eventually_prod_iff]
state_before: case inr.intro.intro.intro.intro.intro.intro.intro.intro
ι : Type u_3
l : Filter ι
E : Type u_1
inst✝⁴ : NormedAddCommGroup E
𝕜 : Type u_4
inst✝³ : IsROrC 𝕜
inst✝² : NormedSpace 𝕜 E
G : Type u_2
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : ι → E → G
g : E → G
f' : ι → E → E →L[𝕜] G
g' : E → E →L[𝕜] G
x : E
hf' : TendstoUniformlyOnFilter f' g' l (𝓝 x)
hf : ∀ᶠ (n : ι × E) in l ×ˢ 𝓝 x, HasFDerivAt (f n.fst) (f' n.fst n.snd) n.snd
hfg : ∀ᶠ (y : E) in 𝓝 x, Tendsto (fun n => f n y) l (𝓝 (g y))
this✝¹ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
hl : l ≠ ⊥
this✝ : NeBot l
ε : ℝ
hε : ε > 0
q : ℚ
hqpos : 0 < q
hqε : ↑q < ε
hfg' :
  ∀ᶠ (n : (ι × ι) × E) in (l ×ˢ l) ×ˢ 𝓝 x, dist (OfNat.ofNat 0 n.snd) (f' n.fst.fst n.snd - f' n.fst.snd n.snd) < ↑q
this :
  ∀ᶠ (x : (ι × ι) × E) in (l ×ˢ l) ×ˢ 𝓝 x,
    HasFDerivAt
        (f
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).fst.fst)
        (f'
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).fst.fst
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).fst.snd)
        (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
              (x.fst, x.snd, x.snd).snd.snd).fst.snd ∧
      HasFDerivAt
        (f
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).snd.fst)
        (f'
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).snd.fst
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).snd.snd)
        (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
              (x.fst, x.snd, x.snd).snd.snd).snd.snd
a : ι × ι → Prop
b : ∀ᶠ (x : ι × ι) in l ×ˢ l, a x
c : E → Prop
d : ∀ᶠ (y : E) in 𝓝 x, c y
e :
  ∀ {x : ι × ι},
    a x →
      ∀ {y : E},
        c y →
          dist (OfNat.ofNat 0 (x, y).snd) (f' (x, y).fst.fst (x, y).snd - f' (x, y).fst.snd (x, y).snd) < ↑q ∧
            HasFDerivAt
                (f
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.fst)
                (f'
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.fst
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.snd)
                ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                      ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                      ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.snd ∧
              HasFDerivAt
                (f
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.fst)
                (f'
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.fst
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.snd)
                ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                      ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                      ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.snd
r : ℝ
hr : 0 < r
hr' : ∀ ⦃x_1 : E⦄, x_1 ∈ Metric.ball x r → c x_1
⊢ ∀ᶠ (n : (ι × ι) × E) in (l ×ˢ l) ×ˢ 𝓝 x,
    dist (OfNat.ofNat 0 n.snd)
        ((↑‖n.snd - x‖)⁻¹ • (f n.fst.fst n.snd - f n.fst.fst x) -
          (↑‖n.snd - x‖)⁻¹ • (f n.fst.snd n.snd - f n.fst.snd x)) <
      ε

tactic: refine'
  ⟨_, b, fun e : E => Metric.ball x r e,
    eventually_mem_set.mpr (Metric.nhds_basis_ball.mem_of_mem hr), fun {n} hn {y} hy => _⟩
state_before: case inr.intro.intro.intro.intro.intro.intro.intro.intro
ι : Type u_3
l : Filter ι
E : Type u_1
inst✝⁴ : NormedAddCommGroup E
𝕜 : Type u_4
inst✝³ : IsROrC 𝕜
inst✝² : NormedSpace 𝕜 E
G : Type u_2
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : ι → E → G
g : E → G
f' : ι → E → E →L[𝕜] G
g' : E → E →L[𝕜] G
x : E
hf' : TendstoUniformlyOnFilter f' g' l (𝓝 x)
hf : ∀ᶠ (n : ι × E) in l ×ˢ 𝓝 x, HasFDerivAt (f n.fst) (f' n.fst n.snd) n.snd
hfg : ∀ᶠ (y : E) in 𝓝 x, Tendsto (fun n => f n y) l (𝓝 (g y))
this✝¹ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
hl : l ≠ ⊥
this✝ : NeBot l
ε : ℝ
hε : ε > 0
q : ℚ
hqpos : 0 < q
hqε : ↑q < ε
hfg' :
  ∀ᶠ (n : (ι × ι) × E) in (l ×ˢ l) ×ˢ 𝓝 x, dist (OfNat.ofNat 0 n.snd) (f' n.fst.fst n.snd - f' n.fst.snd n.snd) < ↑q
this :
  ∀ᶠ (x : (ι × ι) × E) in (l ×ˢ l) ×ˢ 𝓝 x,
    HasFDerivAt
        (f
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).fst.fst)
        (f'
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).fst.fst
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).fst.snd)
        (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
              (x.fst, x.snd, x.snd).snd.snd).fst.snd ∧
      HasFDerivAt
        (f
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).snd.fst)
        (f'
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).snd.fst
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).snd.snd)
        (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
              (x.fst, x.snd, x.snd).snd.snd).snd.snd
a : ι × ι → Prop
b : ∀ᶠ (x : ι × ι) in l ×ˢ l, a x
c : E → Prop
d : ∀ᶠ (y : E) in 𝓝 x, c y
e :
  ∀ {x : ι × ι},
    a x →
      ∀ {y : E},
        c y →
          dist (OfNat.ofNat 0 (x, y).snd) (f' (x, y).fst.fst (x, y).snd - f' (x, y).fst.snd (x, y).snd) < ↑q ∧
            HasFDerivAt
                (f
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.fst)
                (f'
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.fst
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.snd)
                ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                      ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                      ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.snd ∧
              HasFDerivAt
                (f
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.fst)
                (f'
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.fst
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.snd)
                ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                      ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                      ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.snd
r : ℝ
hr : 0 < r
hr' : ∀ ⦃x_1 : E⦄, x_1 ∈ Metric.ball x r → c x_1
⊢ ∃ pa,
    (∀ᶠ (x : ι × ι) in l ×ˢ l, pa x) ∧
      ∃ pb,
        (∀ᶠ (y : E) in 𝓝 x, pb y) ∧
          ∀ {x_1 : ι × ι},
            pa x_1 →
              ∀ {y : E},
                pb y →
                  dist (OfNat.ofNat 0 (x_1, y).snd)
                      ((↑‖(x_1, y).snd - x‖)⁻¹ • (f (x_1, y).fst.fst (x_1, y).snd - f (x_1, y).fst.fst x) -
                        (↑‖(x_1, y).snd - x‖)⁻¹ • (f (x_1, y).fst.snd (x_1, y).snd - f (x_1, y).fst.snd x)) <
                    ε

tactic: simp only [Pi.zero_apply, dist_zero_left]
state_before: case inr.intro.intro.intro.intro.intro.intro.intro.intro
ι : Type u_3
l : Filter ι
E : Type u_1
inst✝⁴ : NormedAddCommGroup E
𝕜 : Type u_4
inst✝³ : IsROrC 𝕜
inst✝² : NormedSpace 𝕜 E
G : Type u_2
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : ι → E → G
g : E → G
f' : ι → E → E →L[𝕜] G
g' : E → E →L[𝕜] G
x : E
hf' : TendstoUniformlyOnFilter f' g' l (𝓝 x)
hf : ∀ᶠ (n : ι × E) in l ×ˢ 𝓝 x, HasFDerivAt (f n.fst) (f' n.fst n.snd) n.snd
hfg : ∀ᶠ (y : E) in 𝓝 x, Tendsto (fun n => f n y) l (𝓝 (g y))
this✝¹ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
hl : l ≠ ⊥
this✝ : NeBot l
ε : ℝ
hε : ε > 0
q : ℚ
hqpos : 0 < q
hqε : ↑q < ε
hfg' :
  ∀ᶠ (n : (ι × ι) × E) in (l ×ˢ l) ×ˢ 𝓝 x, dist (OfNat.ofNat 0 n.snd) (f' n.fst.fst n.snd - f' n.fst.snd n.snd) < ↑q
this :
  ∀ᶠ (x : (ι × ι) × E) in (l ×ˢ l) ×ˢ 𝓝 x,
    HasFDerivAt
        (f
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).fst.fst)
        (f'
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).fst.fst
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).fst.snd)
        (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
              (x.fst, x.snd, x.snd).snd.snd).fst.snd ∧
      HasFDerivAt
        (f
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).snd.fst)
        (f'
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).snd.fst
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).snd.snd)
        (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
              (x.fst, x.snd, x.snd).snd.snd).snd.snd
a : ι × ι → Prop
b : ∀ᶠ (x : ι × ι) in l ×ˢ l, a x
c : E → Prop
d : ∀ᶠ (y : E) in 𝓝 x, c y
e :
  ∀ {x : ι × ι},
    a x →
      ∀ {y : E},
        c y →
          dist (OfNat.ofNat 0 (x, y).snd) (f' (x, y).fst.fst (x, y).snd - f' (x, y).fst.snd (x, y).snd) < ↑q ∧
            HasFDerivAt
                (f
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.fst)
                (f'
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.fst
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.snd)
                ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                      ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                      ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.snd ∧
              HasFDerivAt
                (f
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.fst)
                (f'
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.fst
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.snd)
                ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                      ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                      ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.snd
r : ℝ
hr : 0 < r
hr' : ∀ ⦃x_1 : E⦄, x_1 ∈ Metric.ball x r → c x_1
n : ι × ι
hn : a n
y : E
hy : (fun e => Metric.ball x r e) y
⊢ dist (OfNat.ofNat 0 (n, y).snd)
      ((↑‖(n, y).snd - x‖)⁻¹ • (f (n, y).fst.fst (n, y).snd - f (n, y).fst.fst x) -
        (↑‖(n, y).snd - x‖)⁻¹ • (f (n, y).fst.snd (n, y).snd - f (n, y).fst.snd x)) <
    ε

tactic: rw [← smul_sub, norm_smul, norm_inv, IsROrC.norm_coe_norm]
state_before: case inr.intro.intro.intro.intro.intro.intro.intro.intro
ι : Type u_3
l : Filter ι
E : Type u_1
inst✝⁴ : NormedAddCommGroup E
𝕜 : Type u_4
inst✝³ : IsROrC 𝕜
inst✝² : NormedSpace 𝕜 E
G : Type u_2
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : ι → E → G
g : E → G
f' : ι → E → E →L[𝕜] G
g' : E → E →L[𝕜] G
x : E
hf' : TendstoUniformlyOnFilter f' g' l (𝓝 x)
hf : ∀ᶠ (n : ι × E) in l ×ˢ 𝓝 x, HasFDerivAt (f n.fst) (f' n.fst n.snd) n.snd
hfg : ∀ᶠ (y : E) in 𝓝 x, Tendsto (fun n => f n y) l (𝓝 (g y))
this✝¹ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
hl : l ≠ ⊥
this✝ : NeBot l
ε : ℝ
hε : ε > 0
q : ℚ
hqpos : 0 < q
hqε : ↑q < ε
hfg' :
  ∀ᶠ (n : (ι × ι) × E) in (l ×ˢ l) ×ˢ 𝓝 x, dist (OfNat.ofNat 0 n.snd) (f' n.fst.fst n.snd - f' n.fst.snd n.snd) < ↑q
this :
  ∀ᶠ (x : (ι × ι) × E) in (l ×ˢ l) ×ˢ 𝓝 x,
    HasFDerivAt
        (f
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).fst.fst)
        (f'
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).fst.fst
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).fst.snd)
        (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
              (x.fst, x.snd, x.snd).snd.snd).fst.snd ∧
      HasFDerivAt
        (f
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).snd.fst)
        (f'
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).snd.fst
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).snd.snd)
        (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
              (x.fst, x.snd, x.snd).snd.snd).snd.snd
a : ι × ι → Prop
b : ∀ᶠ (x : ι × ι) in l ×ˢ l, a x
c : E → Prop
d : ∀ᶠ (y : E) in 𝓝 x, c y
e :
  ∀ {x : ι × ι},
    a x →
      ∀ {y : E},
        c y →
          dist (OfNat.ofNat 0 (x, y).snd) (f' (x, y).fst.fst (x, y).snd - f' (x, y).fst.snd (x, y).snd) < ↑q ∧
            HasFDerivAt
                (f
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.fst)
                (f'
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.fst
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.snd)
                ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                      ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                      ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.snd ∧
              HasFDerivAt
                (f
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.fst)
                (f'
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.fst
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.snd)
                ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                      ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                      ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.snd
r : ℝ
hr : 0 < r
hr' : ∀ ⦃x_1 : E⦄, x_1 ∈ Metric.ball x r → c x_1
n : ι × ι
hn : a n
y : E
hy : (fun e => Metric.ball x r e) y
⊢ ‖(↑‖y - x‖)⁻¹ • (f n.fst y - f n.fst x) - (↑‖y - x‖)⁻¹ • (f n.snd y - f n.snd x)‖ < ε

tactic: refine' lt_of_le_of_lt _ hqε
state_before: case inr.intro.intro.intro.intro.intro.intro.intro.intro
ι : Type u_3
l : Filter ι
E : Type u_1
inst✝⁴ : NormedAddCommGroup E
𝕜 : Type u_4
inst✝³ : IsROrC 𝕜
inst✝² : NormedSpace 𝕜 E
G : Type u_2
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : ι → E → G
g : E → G
f' : ι → E → E →L[𝕜] G
g' : E → E →L[𝕜] G
x : E
hf' : TendstoUniformlyOnFilter f' g' l (𝓝 x)
hf : ∀ᶠ (n : ι × E) in l ×ˢ 𝓝 x, HasFDerivAt (f n.fst) (f' n.fst n.snd) n.snd
hfg : ∀ᶠ (y : E) in 𝓝 x, Tendsto (fun n => f n y) l (𝓝 (g y))
this✝¹ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
hl : l ≠ ⊥
this✝ : NeBot l
ε : ℝ
hε : ε > 0
q : ℚ
hqpos : 0 < q
hqε : ↑q < ε
hfg' :
  ∀ᶠ (n : (ι × ι) × E) in (l ×ˢ l) ×ˢ 𝓝 x, dist (OfNat.ofNat 0 n.snd) (f' n.fst.fst n.snd - f' n.fst.snd n.snd) < ↑q
this :
  ∀ᶠ (x : (ι × ι) × E) in (l ×ˢ l) ×ˢ 𝓝 x,
    HasFDerivAt
        (f
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).fst.fst)
        (f'
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).fst.fst
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).fst.snd)
        (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
              (x.fst, x.snd, x.snd).snd.snd).fst.snd ∧
      HasFDerivAt
        (f
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).snd.fst)
        (f'
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).snd.fst
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).snd.snd)
        (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
              (x.fst, x.snd, x.snd).snd.snd).snd.snd
a : ι × ι → Prop
b : ∀ᶠ (x : ι × ι) in l ×ˢ l, a x
c : E → Prop
d : ∀ᶠ (y : E) in 𝓝 x, c y
e :
  ∀ {x : ι × ι},
    a x →
      ∀ {y : E},
        c y →
          dist (OfNat.ofNat 0 (x, y).snd) (f' (x, y).fst.fst (x, y).snd - f' (x, y).fst.snd (x, y).snd) < ↑q ∧
            HasFDerivAt
                (f
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.fst)
                (f'
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.fst
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.snd)
                ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                      ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                      ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.snd ∧
              HasFDerivAt
                (f
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.fst)
                (f'
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.fst
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.snd)
                ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                      ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                      ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.snd
r : ℝ
hr : 0 < r
hr' : ∀ ⦃x_1 : E⦄, x_1 ∈ Metric.ball x r → c x_1
n : ι × ι
hn : a n
y : E
hy : (fun e => Metric.ball x r e) y
⊢ ‖y - x‖⁻¹ * ‖f n.fst y - f n.fst x - (f n.snd y - f n.snd x)‖ < ε

tactic: by_cases hyz' : x = y
state_before: case inr.intro.intro.intro.intro.intro.intro.intro.intro
ι : Type u_3
l : Filter ι
E : Type u_1
inst✝⁴ : NormedAddCommGroup E
𝕜 : Type u_4
inst✝³ : IsROrC 𝕜
inst✝² : NormedSpace 𝕜 E
G : Type u_2
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : ι → E → G
g : E → G
f' : ι → E → E →L[𝕜] G
g' : E → E →L[𝕜] G
x : E
hf' : TendstoUniformlyOnFilter f' g' l (𝓝 x)
hf : ∀ᶠ (n : ι × E) in l ×ˢ 𝓝 x, HasFDerivAt (f n.fst) (f' n.fst n.snd) n.snd
hfg : ∀ᶠ (y : E) in 𝓝 x, Tendsto (fun n => f n y) l (𝓝 (g y))
this✝¹ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
hl : l ≠ ⊥
this✝ : NeBot l
ε : ℝ
hε : ε > 0
q : ℚ
hqpos : 0 < q
hqε : ↑q < ε
hfg' :
  ∀ᶠ (n : (ι × ι) × E) in (l ×ˢ l) ×ˢ 𝓝 x, dist (OfNat.ofNat 0 n.snd) (f' n.fst.fst n.snd - f' n.fst.snd n.snd) < ↑q
this :
  ∀ᶠ (x : (ι × ι) × E) in (l ×ˢ l) ×ˢ 𝓝 x,
    HasFDerivAt
        (f
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).fst.fst)
        (f'
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).fst.fst
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).fst.snd)
        (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
              (x.fst, x.snd, x.snd).snd.snd).fst.snd ∧
      HasFDerivAt
        (f
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).snd.fst)
        (f'
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).snd.fst
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).snd.snd)
        (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
              (x.fst, x.snd, x.snd).snd.snd).snd.snd
a : ι × ι → Prop
b : ∀ᶠ (x : ι × ι) in l ×ˢ l, a x
c : E → Prop
d : ∀ᶠ (y : E) in 𝓝 x, c y
e :
  ∀ {x : ι × ι},
    a x →
      ∀ {y : E},
        c y →
          dist (OfNat.ofNat 0 (x, y).snd) (f' (x, y).fst.fst (x, y).snd - f' (x, y).fst.snd (x, y).snd) < ↑q ∧
            HasFDerivAt
                (f
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.fst)
                (f'
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.fst
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.snd)
                ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                      ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                      ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.snd ∧
              HasFDerivAt
                (f
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.fst)
                (f'
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.fst
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.snd)
                ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                      ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                      ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.snd
r : ℝ
hr : 0 < r
hr' : ∀ ⦃x_1 : E⦄, x_1 ∈ Metric.ball x r → c x_1
n : ι × ι
hn : a n
y : E
hy : (fun e => Metric.ball x r e) y
⊢ ‖y - x‖⁻¹ * ‖f n.fst y - f n.fst x - (f n.snd y - f n.snd x)‖ ≤ ↑q

tactic: have hyz : 0 < ‖y - x‖ := by rw [norm_pos_iff]; intro hy'; exact hyz' (eq_of_sub_eq_zero hy').symm
state_before: case neg
ι : Type u_3
l : Filter ι
E : Type u_1
inst✝⁴ : NormedAddCommGroup E
𝕜 : Type u_4
inst✝³ : IsROrC 𝕜
inst✝² : NormedSpace 𝕜 E
G : Type u_2
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : ι → E → G
g : E → G
f' : ι → E → E →L[𝕜] G
g' : E → E →L[𝕜] G
x : E
hf' : TendstoUniformlyOnFilter f' g' l (𝓝 x)
hf : ∀ᶠ (n : ι × E) in l ×ˢ 𝓝 x, HasFDerivAt (f n.fst) (f' n.fst n.snd) n.snd
hfg : ∀ᶠ (y : E) in 𝓝 x, Tendsto (fun n => f n y) l (𝓝 (g y))
this✝¹ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
hl : l ≠ ⊥
this✝ : NeBot l
ε : ℝ
hε : ε > 0
q : ℚ
hqpos : 0 < q
hqε : ↑q < ε
hfg' :
  ∀ᶠ (n : (ι × ι) × E) in (l ×ˢ l) ×ˢ 𝓝 x, dist (OfNat.ofNat 0 n.snd) (f' n.fst.fst n.snd - f' n.fst.snd n.snd) < ↑q
this :
  ∀ᶠ (x : (ι × ι) × E) in (l ×ˢ l) ×ˢ 𝓝 x,
    HasFDerivAt
        (f
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).fst.fst)
        (f'
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).fst.fst
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).fst.snd)
        (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
              (x.fst, x.snd, x.snd).snd.snd).fst.snd ∧
      HasFDerivAt
        (f
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).snd.fst)
        (f'
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).snd.fst
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).snd.snd)
        (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
              (x.fst, x.snd, x.snd).snd.snd).snd.snd
a : ι × ι → Prop
b : ∀ᶠ (x : ι × ι) in l ×ˢ l, a x
c : E → Prop
d : ∀ᶠ (y : E) in 𝓝 x, c y
e :
  ∀ {x : ι × ι},
    a x →
      ∀ {y : E},
        c y →
          dist (OfNat.ofNat 0 (x, y).snd) (f' (x, y).fst.fst (x, y).snd - f' (x, y).fst.snd (x, y).snd) < ↑q ∧
            HasFDerivAt
                (f
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.fst)
                (f'
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.fst
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.snd)
                ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                      ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                      ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.snd ∧
              HasFDerivAt
                (f
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.fst)
                (f'
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.fst
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.snd)
                ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                      ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                      ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.snd
r : ℝ
hr : 0 < r
hr' : ∀ ⦃x_1 : E⦄, x_1 ∈ Metric.ball x r → c x_1
n : ι × ι
hn : a n
y : E
hy : (fun e => Metric.ball x r e) y
hyz' : ¬x = y
⊢ ‖y - x‖⁻¹ * ‖f n.fst y - f n.fst x - (f n.snd y - f n.snd x)‖ ≤ ↑q

tactic: rw [inv_mul_le_iff hyz, mul_comm, sub_sub_sub_comm]
state_before: case neg
ι : Type u_3
l : Filter ι
E : Type u_1
inst✝⁴ : NormedAddCommGroup E
𝕜 : Type u_4
inst✝³ : IsROrC 𝕜
inst✝² : NormedSpace 𝕜 E
G : Type u_2
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : ι → E → G
g : E → G
f' : ι → E → E →L[𝕜] G
g' : E → E →L[𝕜] G
x : E
hf' : TendstoUniformlyOnFilter f' g' l (𝓝 x)
hf : ∀ᶠ (n : ι × E) in l ×ˢ 𝓝 x, HasFDerivAt (f n.fst) (f' n.fst n.snd) n.snd
hfg : ∀ᶠ (y : E) in 𝓝 x, Tendsto (fun n => f n y) l (𝓝 (g y))
this✝¹ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
hl : l ≠ ⊥
this✝ : NeBot l
ε : ℝ
hε : ε > 0
q : ℚ
hqpos : 0 < q
hqε : ↑q < ε
hfg' :
  ∀ᶠ (n : (ι × ι) × E) in (l ×ˢ l) ×ˢ 𝓝 x, dist (OfNat.ofNat 0 n.snd) (f' n.fst.fst n.snd - f' n.fst.snd n.snd) < ↑q
this :
  ∀ᶠ (x : (ι × ι) × E) in (l ×ˢ l) ×ˢ 𝓝 x,
    HasFDerivAt
        (f
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).fst.fst)
        (f'
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).fst.fst
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).fst.snd)
        (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
              (x.fst, x.snd, x.snd).snd.snd).fst.snd ∧
      HasFDerivAt
        (f
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).snd.fst)
        (f'
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).snd.fst
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).snd.snd)
        (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
              (x.fst, x.snd, x.snd).snd.snd).snd.snd
a : ι × ι → Prop
b : ∀ᶠ (x : ι × ι) in l ×ˢ l, a x
c : E → Prop
d : ∀ᶠ (y : E) in 𝓝 x, c y
e :
  ∀ {x : ι × ι},
    a x →
      ∀ {y : E},
        c y →
          dist (OfNat.ofNat 0 (x, y).snd) (f' (x, y).fst.fst (x, y).snd - f' (x, y).fst.snd (x, y).snd) < ↑q ∧
            HasFDerivAt
                (f
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.fst)
                (f'
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.fst
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.snd)
                ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                      ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                      ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.snd ∧
              HasFDerivAt
                (f
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.fst)
                (f'
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.fst
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.snd)
                ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                      ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                      ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.snd
r : ℝ
hr : 0 < r
hr' : ∀ ⦃x_1 : E⦄, x_1 ∈ Metric.ball x r → c x_1
n : ι × ι
hn : a n
y : E
hy : (fun e => Metric.ball x r e) y
hyz' : ¬x = y
hyz : 0 < ‖y - x‖
⊢ ‖y - x‖⁻¹ * ‖f n.fst y - f n.fst x - (f n.snd y - f n.snd x)‖ ≤ ↑q

tactic: simp only [Pi.zero_apply, dist_zero_left] at e
state_before: case neg
ι : Type u_3
l : Filter ι
E : Type u_1
inst✝⁴ : NormedAddCommGroup E
𝕜 : Type u_4
inst✝³ : IsROrC 𝕜
inst✝² : NormedSpace 𝕜 E
G : Type u_2
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : ι → E → G
g : E → G
f' : ι → E → E →L[𝕜] G
g' : E → E →L[𝕜] G
x : E
hf' : TendstoUniformlyOnFilter f' g' l (𝓝 x)
hf : ∀ᶠ (n : ι × E) in l ×ˢ 𝓝 x, HasFDerivAt (f n.fst) (f' n.fst n.snd) n.snd
hfg : ∀ᶠ (y : E) in 𝓝 x, Tendsto (fun n => f n y) l (𝓝 (g y))
this✝¹ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
hl : l ≠ ⊥
this✝ : NeBot l
ε : ℝ
hε : ε > 0
q : ℚ
hqpos : 0 < q
hqε : ↑q < ε
hfg' :
  ∀ᶠ (n : (ι × ι) × E) in (l ×ˢ l) ×ˢ 𝓝 x, dist (OfNat.ofNat 0 n.snd) (f' n.fst.fst n.snd - f' n.fst.snd n.snd) < ↑q
this :
  ∀ᶠ (x : (ι × ι) × E) in (l ×ˢ l) ×ˢ 𝓝 x,
    HasFDerivAt
        (f
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).fst.fst)
        (f'
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).fst.fst
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).fst.snd)
        (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
              (x.fst, x.snd, x.snd).snd.snd).fst.snd ∧
      HasFDerivAt
        (f
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).snd.fst)
        (f'
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).snd.fst
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).snd.snd)
        (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
              (x.fst, x.snd, x.snd).snd.snd).snd.snd
a : ι × ι → Prop
b : ∀ᶠ (x : ι × ι) in l ×ˢ l, a x
c : E → Prop
d : ∀ᶠ (y : E) in 𝓝 x, c y
e :
  ∀ {x : ι × ι},
    a x →
      ∀ {y : E},
        c y →
          dist (OfNat.ofNat 0 (x, y).snd) (f' (x, y).fst.fst (x, y).snd - f' (x, y).fst.snd (x, y).snd) < ↑q ∧
            HasFDerivAt
                (f
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.fst)
                (f'
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.fst
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.snd)
                ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                      ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                      ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.snd ∧
              HasFDerivAt
                (f
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.fst)
                (f'
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.fst
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.snd)
                ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                      ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                      ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.snd
r : ℝ
hr : 0 < r
hr' : ∀ ⦃x_1 : E⦄, x_1 ∈ Metric.ball x r → c x_1
n : ι × ι
hn : a n
y : E
hy : (fun e => Metric.ball x r e) y
hyz' : ¬x = y
hyz : 0 < ‖y - x‖
⊢ ‖f n.fst y - f n.snd y - (f n.fst x - f n.snd x)‖ ≤ ↑q * ‖y - x‖

tactic: refine'
  Convex.norm_image_sub_le_of_norm_hasFDerivWithin_le
    (fun y hy => ((e hn (hr' hy)).2.1.sub (e hn (hr' hy)).2.2).hasFDerivWithinAt)
    (fun y hy => (e hn (hr' hy)).1.le) (convex_ball x r) (Metric.mem_ball_self hr) hy
state_before: case neg
ι : Type u_3
l : Filter ι
E : Type u_1
inst✝⁴ : NormedAddCommGroup E
𝕜 : Type u_4
inst✝³ : IsROrC 𝕜
inst✝² : NormedSpace 𝕜 E
G : Type u_2
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : ι → E → G
g : E → G
f' : ι → E → E →L[𝕜] G
g' : E → E →L[𝕜] G
x : E
hf' : TendstoUniformlyOnFilter f' g' l (𝓝 x)
hf : ∀ᶠ (n : ι × E) in l ×ˢ 𝓝 x, HasFDerivAt (f n.fst) (f' n.fst n.snd) n.snd
hfg : ∀ᶠ (y : E) in 𝓝 x, Tendsto (fun n => f n y) l (𝓝 (g y))
this✝¹ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
hl : l ≠ ⊥
this✝ : NeBot l
ε : ℝ
hε : ε > 0
q : ℚ
hqpos : 0 < q
hqε : ↑q < ε
hfg' :
  ∀ᶠ (n : (ι × ι) × E) in (l ×ˢ l) ×ˢ 𝓝 x, dist (OfNat.ofNat 0 n.snd) (f' n.fst.fst n.snd - f' n.fst.snd n.snd) < ↑q
this :
  ∀ᶠ (x : (ι × ι) × E) in (l ×ˢ l) ×ˢ 𝓝 x,
    HasFDerivAt
        (f
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).fst.fst)
        (f'
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).fst.fst
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).fst.snd)
        (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
              (x.fst, x.snd, x.snd).snd.snd).fst.snd ∧
      HasFDerivAt
        (f
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).snd.fst)
        (f'
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).snd.fst
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).snd.snd)
        (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
              (x.fst, x.snd, x.snd).snd.snd).snd.snd
a : ι × ι → Prop
b : ∀ᶠ (x : ι × ι) in l ×ˢ l, a x
c : E → Prop
d : ∀ᶠ (y : E) in 𝓝 x, c y
r : ℝ
hr : 0 < r
hr' : ∀ ⦃x_1 : E⦄, x_1 ∈ Metric.ball x r → c x_1
n : ι × ι
hn : a n
y : E
hy : (fun e => Metric.ball x r e) y
hyz' : ¬x = y
hyz : 0 < ‖y - x‖
e :
  ∀ {x : ι × ι},
    a x →
      ∀ {y : E},
        c y →
          ‖f' x.fst y - f' x.snd y‖ < ↑q ∧ HasFDerivAt (f x.fst) (f' x.fst y) y ∧ HasFDerivAt (f x.snd) (f' x.snd y) y
⊢ ‖f n.fst y - f n.snd y - (f n.fst x - f n.snd x)‖ ≤ ↑q * ‖y - x‖

tactic: simp only [hl, TendstoUniformlyOnFilter, bot_prod, eventually_bot, imp_true_iff]
state_before: case inl
ι : Type u_3
l : Filter ι
E : Type u_1
inst✝⁴ : NormedAddCommGroup E
𝕜 : Type u_4
inst✝³ : IsROrC 𝕜
inst✝² : NormedSpace 𝕜 E
G : Type u_2
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : ι → E → G
g : E → G
f' : ι → E → E →L[𝕜] G
g' : E → E →L[𝕜] G
x : E
hf' : TendstoUniformlyOnFilter f' g' l (𝓝 x)
hf : ∀ᶠ (n : ι × E) in l ×ˢ 𝓝 x, HasFDerivAt (f n.fst) (f' n.fst n.snd) n.snd
hfg : ∀ᶠ (y : E) in 𝓝 x, Tendsto (fun n => f n y) l (𝓝 (g y))
this : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
hl : l = ⊥
⊢ TendstoUniformlyOnFilter (fun n y => (↑‖y - x‖)⁻¹ • (f n y - f n x)) (fun y => (↑‖y - x‖)⁻¹ • (g y - g x)) l (𝓝 x)

tactic: simp [hqpos]
state_before: ι : Type u_3
l : Filter ι
E : Type u_1
inst✝⁴ : NormedAddCommGroup E
𝕜 : Type u_4
inst✝³ : IsROrC 𝕜
inst✝² : NormedSpace 𝕜 E
G : Type u_2
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : ι → E → G
g : E → G
f' : ι → E → E →L[𝕜] G
g' : E → E →L[𝕜] G
x : E
hf' : TendstoUniformlyOnFilter f' g' l (𝓝 x)
hf : ∀ᶠ (n : ι × E) in l ×ˢ 𝓝 x, HasFDerivAt (f n.fst) (f' n.fst n.snd) n.snd
hfg : ∀ᶠ (y : E) in 𝓝 x, Tendsto (fun n => f n y) l (𝓝 (g y))
this✝ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
hl : l ≠ ⊥
this : NeBot l
hfg' :
  ∀ (ε : ℝ),
    ε > 0 →
      ∀ᶠ (n : (ι × ι) × E) in (l ×ˢ l) ×ˢ 𝓝 x, dist (OfNat.ofNat 0 n.snd) (f' n.fst.fst n.snd - f' n.fst.snd n.snd) < ε
ε : ℝ
hε : ε > 0
q : ℚ
hqpos : 0 < q
hqε : ↑q < ε
⊢ ↑q > 0

tactic: simp [hyz', hqpos.le]
state_before: case pos
ι : Type u_3
l : Filter ι
E : Type u_1
inst✝⁴ : NormedAddCommGroup E
𝕜 : Type u_4
inst✝³ : IsROrC 𝕜
inst✝² : NormedSpace 𝕜 E
G : Type u_2
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : ι → E → G
g : E → G
f' : ι → E → E →L[𝕜] G
g' : E → E →L[𝕜] G
x : E
hf' : TendstoUniformlyOnFilter f' g' l (𝓝 x)
hf : ∀ᶠ (n : ι × E) in l ×ˢ 𝓝 x, HasFDerivAt (f n.fst) (f' n.fst n.snd) n.snd
hfg : ∀ᶠ (y : E) in 𝓝 x, Tendsto (fun n => f n y) l (𝓝 (g y))
this✝¹ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
hl : l ≠ ⊥
this✝ : NeBot l
ε : ℝ
hε : ε > 0
q : ℚ
hqpos : 0 < q
hqε : ↑q < ε
hfg' :
  ∀ᶠ (n : (ι × ι) × E) in (l ×ˢ l) ×ˢ 𝓝 x, dist (OfNat.ofNat 0 n.snd) (f' n.fst.fst n.snd - f' n.fst.snd n.snd) < ↑q
this :
  ∀ᶠ (x : (ι × ι) × E) in (l ×ˢ l) ×ˢ 𝓝 x,
    HasFDerivAt
        (f
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).fst.fst)
        (f'
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).fst.fst
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).fst.snd)
        (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
              (x.fst, x.snd, x.snd).snd.snd).fst.snd ∧
      HasFDerivAt
        (f
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).snd.fst)
        (f'
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).snd.fst
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).snd.snd)
        (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
              (x.fst, x.snd, x.snd).snd.snd).snd.snd
a : ι × ι → Prop
b : ∀ᶠ (x : ι × ι) in l ×ˢ l, a x
c : E → Prop
d : ∀ᶠ (y : E) in 𝓝 x, c y
e :
  ∀ {x : ι × ι},
    a x →
      ∀ {y : E},
        c y →
          dist (OfNat.ofNat 0 (x, y).snd) (f' (x, y).fst.fst (x, y).snd - f' (x, y).fst.snd (x, y).snd) < ↑q ∧
            HasFDerivAt
                (f
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.fst)
                (f'
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.fst
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.snd)
                ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                      ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                      ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.snd ∧
              HasFDerivAt
                (f
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.fst)
                (f'
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.fst
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.snd)
                ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                      ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                      ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.snd
r : ℝ
hr : 0 < r
hr' : ∀ ⦃x_1 : E⦄, x_1 ∈ Metric.ball x r → c x_1
n : ι × ι
hn : a n
y : E
hy : (fun e => Metric.ball x r e) y
hyz' : x = y
⊢ ‖y - x‖⁻¹ * ‖f n.fst y - f n.fst x - (f n.snd y - f n.snd x)‖ ≤ ↑q

tactic: rw [norm_pos_iff]
state_before: ι : Type u_3
l : Filter ι
E : Type u_1
inst✝⁴ : NormedAddCommGroup E
𝕜 : Type u_4
inst✝³ : IsROrC 𝕜
inst✝² : NormedSpace 𝕜 E
G : Type u_2
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : ι → E → G
g : E → G
f' : ι → E → E →L[𝕜] G
g' : E → E →L[𝕜] G
x : E
hf' : TendstoUniformlyOnFilter f' g' l (𝓝 x)
hf : ∀ᶠ (n : ι × E) in l ×ˢ 𝓝 x, HasFDerivAt (f n.fst) (f' n.fst n.snd) n.snd
hfg : ∀ᶠ (y : E) in 𝓝 x, Tendsto (fun n => f n y) l (𝓝 (g y))
this✝¹ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
hl : l ≠ ⊥
this✝ : NeBot l
ε : ℝ
hε : ε > 0
q : ℚ
hqpos : 0 < q
hqε : ↑q < ε
hfg' :
  ∀ᶠ (n : (ι × ι) × E) in (l ×ˢ l) ×ˢ 𝓝 x, dist (OfNat.ofNat 0 n.snd) (f' n.fst.fst n.snd - f' n.fst.snd n.snd) < ↑q
this :
  ∀ᶠ (x : (ι × ι) × E) in (l ×ˢ l) ×ˢ 𝓝 x,
    HasFDerivAt
        (f
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).fst.fst)
        (f'
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).fst.fst
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).fst.snd)
        (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
              (x.fst, x.snd, x.snd).snd.snd).fst.snd ∧
      HasFDerivAt
        (f
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).snd.fst)
        (f'
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).snd.fst
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).snd.snd)
        (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
              (x.fst, x.snd, x.snd).snd.snd).snd.snd
a : ι × ι → Prop
b : ∀ᶠ (x : ι × ι) in l ×ˢ l, a x
c : E → Prop
d : ∀ᶠ (y : E) in 𝓝 x, c y
e :
  ∀ {x : ι × ι},
    a x →
      ∀ {y : E},
        c y →
          dist (OfNat.ofNat 0 (x, y).snd) (f' (x, y).fst.fst (x, y).snd - f' (x, y).fst.snd (x, y).snd) < ↑q ∧
            HasFDerivAt
                (f
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.fst)
                (f'
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.fst
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.snd)
                ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                      ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                      ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.snd ∧
              HasFDerivAt
                (f
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.fst)
                (f'
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.fst
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.snd)
                ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                      ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                      ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.snd
r : ℝ
hr : 0 < r
hr' : ∀ ⦃x_1 : E⦄, x_1 ∈ Metric.ball x r → c x_1
n : ι × ι
hn : a n
y : E
hy : (fun e => Metric.ball x r e) y
hyz' : ¬x = y
⊢ 0 < ‖y - x‖

tactic: intro hy'
state_before: ι : Type u_3
l : Filter ι
E : Type u_1
inst✝⁴ : NormedAddCommGroup E
𝕜 : Type u_4
inst✝³ : IsROrC 𝕜
inst✝² : NormedSpace 𝕜 E
G : Type u_2
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : ι → E → G
g : E → G
f' : ι → E → E →L[𝕜] G
g' : E → E →L[𝕜] G
x : E
hf' : TendstoUniformlyOnFilter f' g' l (𝓝 x)
hf : ∀ᶠ (n : ι × E) in l ×ˢ 𝓝 x, HasFDerivAt (f n.fst) (f' n.fst n.snd) n.snd
hfg : ∀ᶠ (y : E) in 𝓝 x, Tendsto (fun n => f n y) l (𝓝 (g y))
this✝¹ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
hl : l ≠ ⊥
this✝ : NeBot l
ε : ℝ
hε : ε > 0
q : ℚ
hqpos : 0 < q
hqε : ↑q < ε
hfg' :
  ∀ᶠ (n : (ι × ι) × E) in (l ×ˢ l) ×ˢ 𝓝 x, dist (OfNat.ofNat 0 n.snd) (f' n.fst.fst n.snd - f' n.fst.snd n.snd) < ↑q
this :
  ∀ᶠ (x : (ι × ι) × E) in (l ×ˢ l) ×ˢ 𝓝 x,
    HasFDerivAt
        (f
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).fst.fst)
        (f'
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).fst.fst
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).fst.snd)
        (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
              (x.fst, x.snd, x.snd).snd.snd).fst.snd ∧
      HasFDerivAt
        (f
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).snd.fst)
        (f'
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).snd.fst
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).snd.snd)
        (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
              (x.fst, x.snd, x.snd).snd.snd).snd.snd
a : ι × ι → Prop
b : ∀ᶠ (x : ι × ι) in l ×ˢ l, a x
c : E → Prop
d : ∀ᶠ (y : E) in 𝓝 x, c y
e :
  ∀ {x : ι × ι},
    a x →
      ∀ {y : E},
        c y →
          dist (OfNat.ofNat 0 (x, y).snd) (f' (x, y).fst.fst (x, y).snd - f' (x, y).fst.snd (x, y).snd) < ↑q ∧
            HasFDerivAt
                (f
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.fst)
                (f'
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.fst
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.snd)
                ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                      ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                      ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.snd ∧
              HasFDerivAt
                (f
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.fst)
                (f'
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.fst
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.snd)
                ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                      ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                      ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.snd
r : ℝ
hr : 0 < r
hr' : ∀ ⦃x_1 : E⦄, x_1 ∈ Metric.ball x r → c x_1
n : ι × ι
hn : a n
y : E
hy : (fun e => Metric.ball x r e) y
hyz' : ¬x = y
⊢ y - x ≠ 0

tactic: exact hyz' (eq_of_sub_eq_zero hy').symm
state_before: ι : Type u_3
l : Filter ι
E : Type u_1
inst✝⁴ : NormedAddCommGroup E
𝕜 : Type u_4
inst✝³ : IsROrC 𝕜
inst✝² : NormedSpace 𝕜 E
G : Type u_2
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : ι → E → G
g : E → G
f' : ι → E → E →L[𝕜] G
g' : E → E →L[𝕜] G
x : E
hf' : TendstoUniformlyOnFilter f' g' l (𝓝 x)
hf : ∀ᶠ (n : ι × E) in l ×ˢ 𝓝 x, HasFDerivAt (f n.fst) (f' n.fst n.snd) n.snd
hfg : ∀ᶠ (y : E) in 𝓝 x, Tendsto (fun n => f n y) l (𝓝 (g y))
this✝¹ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
hl : l ≠ ⊥
this✝ : NeBot l
ε : ℝ
hε : ε > 0
q : ℚ
hqpos : 0 < q
hqε : ↑q < ε
hfg' :
  ∀ᶠ (n : (ι × ι) × E) in (l ×ˢ l) ×ˢ 𝓝 x, dist (OfNat.ofNat 0 n.snd) (f' n.fst.fst n.snd - f' n.fst.snd n.snd) < ↑q
this :
  ∀ᶠ (x : (ι × ι) × E) in (l ×ˢ l) ×ˢ 𝓝 x,
    HasFDerivAt
        (f
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).fst.fst)
        (f'
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).fst.fst
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).fst.snd)
        (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
              (x.fst, x.snd, x.snd).snd.snd).fst.snd ∧
      HasFDerivAt
        (f
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).snd.fst)
        (f'
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).snd.fst
          (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
                (x.fst, x.snd, x.snd).snd.snd).snd.snd)
        (((x.fst, x.snd, x.snd).fst.fst, (x.fst, x.snd, x.snd).snd.fst), (x.fst, x.snd, x.snd).fst.snd,
              (x.fst, x.snd, x.snd).snd.snd).snd.snd
a : ι × ι → Prop
b : ∀ᶠ (x : ι × ι) in l ×ˢ l, a x
c : E → Prop
d : ∀ᶠ (y : E) in 𝓝 x, c y
e :
  ∀ {x : ι × ι},
    a x →
      ∀ {y : E},
        c y →
          dist (OfNat.ofNat 0 (x, y).snd) (f' (x, y).fst.fst (x, y).snd - f' (x, y).fst.snd (x, y).snd) < ↑q ∧
            HasFDerivAt
                (f
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.fst)
                (f'
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.fst
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.snd)
                ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                      ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                      ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).fst.snd ∧
              HasFDerivAt
                (f
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.fst)
                (f'
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.fst
                  ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                        ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                        ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.snd)
                ((((x, y).fst, (x, y).snd, (x, y).snd).fst.fst, ((x, y).fst, (x, y).snd, (x, y).snd).snd.fst),
                      ((x, y).fst, (x, y).snd, (x, y).snd).fst.snd,
                      ((x, y).fst, (x, y).snd, (x, y).snd).snd.snd).snd.snd
r : ℝ
hr : 0 < r
hr' : ∀ ⦃x_1 : E⦄, x_1 ∈ Metric.ball x r → c x_1
n : ι × ι
hn : a n
y : E
hy : (fun e => Metric.ball x r e) y
hyz' : ¬x = y
hy' : y - x = 0
⊢ False