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

tactic: letI : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 _
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
r : ℝ
hf' : UniformCauchySeqOn f' l (Metric.ball x r)
hf : ∀ (n : ι) (y : E), y ∈ Metric.ball x r → HasFDerivAt (f n) (f' n y) y
hfg : Cauchy (map (fun n => f n x) l)
⊢ UniformCauchySeqOn f l (Metric.ball x r)

tactic: have : NeBot l := (cauchy_map_iff.1 hfg).1
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
r : ℝ
hf' : UniformCauchySeqOn f' l (Metric.ball x r)
hf : ∀ (n : ι) (y : E), y ∈ Metric.ball x r → HasFDerivAt (f n) (f' n y) y
hfg : Cauchy (map (fun n => f n x) l)
this : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
⊢ UniformCauchySeqOn f l (Metric.ball x r)

tactic: rcases le_or_lt r 0 with (hr | hr)
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
r : ℝ
hf' : UniformCauchySeqOn f' l (Metric.ball x r)
hf : ∀ (n : ι) (y : E), y ∈ Metric.ball x r → HasFDerivAt (f n) (f' n y) y
hfg : Cauchy (map (fun n => f n x) l)
this✝ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
this : NeBot l
⊢ UniformCauchySeqOn f l (Metric.ball x r)

tactic: rw [SeminormedAddGroup.uniformCauchySeqOn_iff_tendstoUniformlyOn_zero] at hf' ⊢
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
r : ℝ
hf' : UniformCauchySeqOn f' l (Metric.ball x r)
hf : ∀ (n : ι) (y : E), y ∈ Metric.ball x r → HasFDerivAt (f n) (f' n y) y
hfg : Cauchy (map (fun n => f n x) l)
this✝ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
this : NeBot l
hr : 0 < r
⊢ UniformCauchySeqOn f l (Metric.ball x r)

tactic: suffices
  TendstoUniformlyOn (fun (n : ι × ι) (z : E) => f n.1 z - f n.2 z - (f n.1 x - f n.2 x)) 0
      (l ×ˢ l) (Metric.ball x r) ∧
    TendstoUniformlyOn (fun (n : ι × ι) (_ : E) => f n.1 x - f n.2 x) 0
      (l ×ˢ l) (Metric.ball x r) by
  have := this.1.add this.2
  rw [add_zero] at this
  refine' this.congr _
  apply eventually_of_forall
  intro n z _
  simp
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
r : ℝ
hf' : TendstoUniformlyOn (fun n z => f' n.fst z - f' n.snd z) 0 (l ×ˢ l) (Metric.ball x r)
hf : ∀ (n : ι) (y : E), y ∈ Metric.ball x r → HasFDerivAt (f n) (f' n y) y
hfg : Cauchy (map (fun n => f n x) l)
this✝ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
this : NeBot l
hr : 0 < r
⊢ TendstoUniformlyOn (fun n z => f n.fst z - f n.snd z) 0 (l ×ˢ l) (Metric.ball x r)

tactic: constructor
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
r : ℝ
hf' : TendstoUniformlyOn (fun n z => f' n.fst z - f' n.snd z) 0 (l ×ˢ l) (Metric.ball x r)
hf : ∀ (n : ι) (y : E), y ∈ Metric.ball x r → HasFDerivAt (f n) (f' n y) y
hfg : Cauchy (map (fun n => f n x) l)
this✝ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
this : NeBot l
hr : 0 < r
⊢ TendstoUniformlyOn (fun n z => f n.fst z - f n.snd z - (f n.fst x - f n.snd x)) 0 (l ×ˢ l) (Metric.ball x r) ∧
    TendstoUniformlyOn (fun n x_1 => f n.fst x - f n.snd x) 0 (l ×ˢ l) (Metric.ball x r)

tactic: simp only [Metric.ball_eq_empty.2 hr, UniformCauchySeqOn, Set.mem_empty_iff_false,
  IsEmpty.forall_iff, eventually_const, 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
r : ℝ
hf' : UniformCauchySeqOn f' l (Metric.ball x r)
hf : ∀ (n : ι) (y : E), y ∈ Metric.ball x r → HasFDerivAt (f n) (f' n y) y
hfg : Cauchy (map (fun n => f n x) l)
this✝ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
this : NeBot l
hr : r ≤ 0
⊢ UniformCauchySeqOn f l (Metric.ball x r)

tactic: have := this.1.add this.2
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
r : ℝ
hf' : TendstoUniformlyOn (fun n z => f' n.fst z - f' n.snd z) 0 (l ×ˢ l) (Metric.ball x r)
hf : ∀ (n : ι) (y : E), y ∈ Metric.ball x r → HasFDerivAt (f n) (f' n y) y
hfg : Cauchy (map (fun n => f n x) l)
this✝¹ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
this✝ : NeBot l
hr : 0 < r
this :
  TendstoUniformlyOn (fun n z => f n.fst z - f n.snd z - (f n.fst x - f n.snd x)) 0 (l ×ˢ l) (Metric.ball x r) ∧
    TendstoUniformlyOn (fun n x_1 => f n.fst x - f n.snd x) 0 (l ×ˢ l) (Metric.ball x r)
⊢ TendstoUniformlyOn (fun n z => f n.fst z - f n.snd z) 0 (l ×ˢ l) (Metric.ball x r)

tactic: rw [add_zero] at this
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
r : ℝ
hf' : TendstoUniformlyOn (fun n z => f' n.fst z - f' n.snd z) 0 (l ×ˢ l) (Metric.ball x r)
hf : ∀ (n : ι) (y : E), y ∈ Metric.ball x r → HasFDerivAt (f n) (f' n y) y
hfg : Cauchy (map (fun n => f n x) l)
this✝² : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
this✝¹ : NeBot l
hr : 0 < r
this✝ :
  TendstoUniformlyOn (fun n z => f n.fst z - f n.snd z - (f n.fst x - f n.snd x)) 0 (l ×ˢ l) (Metric.ball x r) ∧
    TendstoUniformlyOn (fun n x_1 => f n.fst x - f n.snd x) 0 (l ×ˢ l) (Metric.ball x r)
this :
  TendstoUniformlyOn ((fun n z => f n.fst z - f n.snd z - (f n.fst x - f n.snd x)) + fun n x_1 => f n.fst x - f n.snd x)
    (0 + 0) (l ×ˢ l) (Metric.ball x r)
⊢ TendstoUniformlyOn (fun n z => f n.fst z - f n.snd z) 0 (l ×ˢ l) (Metric.ball x r)

tactic: refine' this.congr _
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
r : ℝ
hf' : TendstoUniformlyOn (fun n z => f' n.fst z - f' n.snd z) 0 (l ×ˢ l) (Metric.ball x r)
hf : ∀ (n : ι) (y : E), y ∈ Metric.ball x r → HasFDerivAt (f n) (f' n y) y
hfg : Cauchy (map (fun n => f n x) l)
this✝² : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
this✝¹ : NeBot l
hr : 0 < r
this✝ :
  TendstoUniformlyOn (fun n z => f n.fst z - f n.snd z - (f n.fst x - f n.snd x)) 0 (l ×ˢ l) (Metric.ball x r) ∧
    TendstoUniformlyOn (fun n x_1 => f n.fst x - f n.snd x) 0 (l ×ˢ l) (Metric.ball x r)
this :
  TendstoUniformlyOn ((fun n z => f n.fst z - f n.snd z - (f n.fst x - f n.snd x)) + fun n x_1 => f n.fst x - f n.snd x)
    0 (l ×ˢ l) (Metric.ball x r)
⊢ TendstoUniformlyOn (fun n z => f n.fst z - f n.snd z) 0 (l ×ˢ l) (Metric.ball x r)

tactic: apply eventually_of_forall
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
r : ℝ
hf' : TendstoUniformlyOn (fun n z => f' n.fst z - f' n.snd z) 0 (l ×ˢ l) (Metric.ball x r)
hf : ∀ (n : ι) (y : E), y ∈ Metric.ball x r → HasFDerivAt (f n) (f' n y) y
hfg : Cauchy (map (fun n => f n x) l)
this✝² : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
this✝¹ : NeBot l
hr : 0 < r
this✝ :
  TendstoUniformlyOn (fun n z => f n.fst z - f n.snd z - (f n.fst x - f n.snd x)) 0 (l ×ˢ l) (Metric.ball x r) ∧
    TendstoUniformlyOn (fun n x_1 => f n.fst x - f n.snd x) 0 (l ×ˢ l) (Metric.ball x r)
this :
  TendstoUniformlyOn ((fun n z => f n.fst z - f n.snd z - (f n.fst x - f n.snd x)) + fun n x_1 => f n.fst x - f n.snd x)
    0 (l ×ˢ l) (Metric.ball x r)
⊢ ∀ᶠ (n : ι × ι) in l ×ˢ l,
    Set.EqOn (((fun n z => f n.fst z - f n.snd z - (f n.fst x - f n.snd x)) + fun n x_1 => f n.fst x - f n.snd x) n)
      (fun z => f n.fst z - f n.snd z) (Metric.ball x r)

tactic: intro n z _
state_before: case hp
ι : 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
r : ℝ
hf' : TendstoUniformlyOn (fun n z => f' n.fst z - f' n.snd z) 0 (l ×ˢ l) (Metric.ball x r)
hf : ∀ (n : ι) (y : E), y ∈ Metric.ball x r → HasFDerivAt (f n) (f' n y) y
hfg : Cauchy (map (fun n => f n x) l)
this✝² : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
this✝¹ : NeBot l
hr : 0 < r
this✝ :
  TendstoUniformlyOn (fun n z => f n.fst z - f n.snd z - (f n.fst x - f n.snd x)) 0 (l ×ˢ l) (Metric.ball x r) ∧
    TendstoUniformlyOn (fun n x_1 => f n.fst x - f n.snd x) 0 (l ×ˢ l) (Metric.ball x r)
this :
  TendstoUniformlyOn ((fun n z => f n.fst z - f n.snd z - (f n.fst x - f n.snd x)) + fun n x_1 => f n.fst x - f n.snd x)
    0 (l ×ˢ l) (Metric.ball x r)
⊢ ∀ (x_1 : ι × ι),
    Set.EqOn (((fun n z => f n.fst z - f n.snd z - (f n.fst x - f n.snd x)) + fun n x_2 => f n.fst x - f n.snd x) x_1)
      (fun z => f x_1.fst z - f x_1.snd z) (Metric.ball x r)

tactic: simp
state_before: case hp
ι : 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
r : ℝ
hf' : TendstoUniformlyOn (fun n z => f' n.fst z - f' n.snd z) 0 (l ×ˢ l) (Metric.ball x r)
hf : ∀ (n : ι) (y : E), y ∈ Metric.ball x r → HasFDerivAt (f n) (f' n y) y
hfg : Cauchy (map (fun n => f n x) l)
this✝² : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
this✝¹ : NeBot l
hr : 0 < r
this✝ :
  TendstoUniformlyOn (fun n z => f n.fst z - f n.snd z - (f n.fst x - f n.snd x)) 0 (l ×ˢ l) (Metric.ball x r) ∧
    TendstoUniformlyOn (fun n x_1 => f n.fst x - f n.snd x) 0 (l ×ˢ l) (Metric.ball x r)
this :
  TendstoUniformlyOn ((fun n z => f n.fst z - f n.snd z - (f n.fst x - f n.snd x)) + fun n x_1 => f n.fst x - f n.snd x)
    0 (l ×ˢ l) (Metric.ball x r)
n : ι × ι
z : E
a✝ : z ∈ Metric.ball x r
⊢ ((fun n z => f n.fst z - f n.snd z - (f n.fst x - f n.snd x)) + fun n x_1 => f n.fst x - f n.snd x) n z =
    (fun z => f n.fst z - f n.snd z) z

tactic: rw [Metric.tendstoUniformlyOn_iff] at hf' ⊢
state_before: case inr.left
ι : 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
r : ℝ
hf' : TendstoUniformlyOn (fun n z => f' n.fst z - f' n.snd z) 0 (l ×ˢ l) (Metric.ball x r)
hf : ∀ (n : ι) (y : E), y ∈ Metric.ball x r → HasFDerivAt (f n) (f' n y) y
hfg : Cauchy (map (fun n => f n x) l)
this✝ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
this : NeBot l
hr : 0 < r
⊢ TendstoUniformlyOn (fun n z => f n.fst z - f n.snd z - (f n.fst x - f n.snd x)) 0 (l ×ˢ l) (Metric.ball x r)

tactic: intro ε hε
state_before: case inr.left
ι : 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
r : ℝ
hf' :
  ∀ (ε : ℝ),
    ε > 0 →
      ∀ᶠ (n : ι × ι) in l ×ˢ l,
        ∀ (x_1 : E), x_1 ∈ Metric.ball x r → dist (OfNat.ofNat 0 x_1) (f' n.fst x_1 - f' n.snd x_1) < ε
hf : ∀ (n : ι) (y : E), y ∈ Metric.ball x r → HasFDerivAt (f n) (f' n y) y
hfg : Cauchy (map (fun n => f n x) l)
this✝ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
this : NeBot l
hr : 0 < r
⊢ ∀ (ε : ℝ),
    ε > 0 →
      ∀ᶠ (n : ι × ι) in l ×ˢ l,
        ∀ (x_1 : E),
          x_1 ∈ Metric.ball x r → dist (OfNat.ofNat 0 x_1) (f n.fst x_1 - f n.snd x_1 - (f n.fst x - f n.snd x)) < ε

tactic: obtain ⟨q, hqpos, hq⟩ : ∃ q : ℝ, 0 < q ∧ q * r < ε := by
  simp_rw [mul_comm]
  exact exists_pos_mul_lt hε.lt r
state_before: case inr.left
ι : 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
r : ℝ
hf' :
  ∀ (ε : ℝ),
    ε > 0 →
      ∀ᶠ (n : ι × ι) in l ×ˢ l,
        ∀ (x_1 : E), x_1 ∈ Metric.ball x r → dist (OfNat.ofNat 0 x_1) (f' n.fst x_1 - f' n.snd x_1) < ε
hf : ∀ (n : ι) (y : E), y ∈ Metric.ball x r → HasFDerivAt (f n) (f' n y) y
hfg : Cauchy (map (fun n => f n x) l)
this✝ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
this : NeBot l
hr : 0 < r
ε : ℝ
hε : ε > 0
⊢ ∀ᶠ (n : ι × ι) in l ×ˢ l,
    ∀ (x_1 : E),
      x_1 ∈ Metric.ball x r → dist (OfNat.ofNat 0 x_1) (f n.fst x_1 - f n.snd x_1 - (f n.fst x - f n.snd x)) < ε

tactic: apply (hf' q hqpos.gt).mono
state_before: case inr.left.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
r : ℝ
hf' :
  ∀ (ε : ℝ),
    ε > 0 →
      ∀ᶠ (n : ι × ι) in l ×ˢ l,
        ∀ (x_1 : E), x_1 ∈ Metric.ball x r → dist (OfNat.ofNat 0 x_1) (f' n.fst x_1 - f' n.snd x_1) < ε
hf : ∀ (n : ι) (y : E), y ∈ Metric.ball x r → HasFDerivAt (f n) (f' n y) y
hfg : Cauchy (map (fun n => f n x) l)
this✝ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
this : NeBot l
hr : 0 < r
ε : ℝ
hε : ε > 0
q : ℝ
hqpos : 0 < q
hq : q * r < ε
⊢ ∀ᶠ (n : ι × ι) in l ×ˢ l,
    ∀ (x_1 : E),
      x_1 ∈ Metric.ball x r → dist (OfNat.ofNat 0 x_1) (f n.fst x_1 - f n.snd x_1 - (f n.fst x - f n.snd x)) < ε

tactic: intro n hn y hy
state_before: case inr.left.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
r : ℝ
hf' :
  ∀ (ε : ℝ),
    ε > 0 →
      ∀ᶠ (n : ι × ι) in l ×ˢ l,
        ∀ (x_1 : E), x_1 ∈ Metric.ball x r → dist (OfNat.ofNat 0 x_1) (f' n.fst x_1 - f' n.snd x_1) < ε
hf : ∀ (n : ι) (y : E), y ∈ Metric.ball x r → HasFDerivAt (f n) (f' n y) y
hfg : Cauchy (map (fun n => f n x) l)
this✝ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
this : NeBot l
hr : 0 < r
ε : ℝ
hε : ε > 0
q : ℝ
hqpos : 0 < q
hq : q * r < ε
⊢ ∀ (x_1 : ι × ι),
    (∀ (x_2 : E), x_2 ∈ Metric.ball x r → dist (OfNat.ofNat 0 x_2) (f' x_1.fst x_2 - f' x_1.snd x_2) < q) →
      ∀ (x_2 : E),
        x_2 ∈ Metric.ball x r →
          dist (OfNat.ofNat 0 x_2) (f x_1.fst x_2 - f x_1.snd x_2 - (f x_1.fst x - f x_1.snd x)) < ε

tactic: simp_rw [dist_eq_norm, Pi.zero_apply, zero_sub, norm_neg] at hn ⊢
state_before: case inr.left.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
r : ℝ
hf' :
  ∀ (ε : ℝ),
    ε > 0 →
      ∀ᶠ (n : ι × ι) in l ×ˢ l,
        ∀ (x_1 : E), x_1 ∈ Metric.ball x r → dist (OfNat.ofNat 0 x_1) (f' n.fst x_1 - f' n.snd x_1) < ε
hf : ∀ (n : ι) (y : E), y ∈ Metric.ball x r → HasFDerivAt (f n) (f' n y) y
hfg : Cauchy (map (fun n => f n x) l)
this✝ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
this : NeBot l
hr : 0 < r
ε : ℝ
hε : ε > 0
q : ℝ
hqpos : 0 < q
hq : q * r < ε
n : ι × ι
hn : ∀ (x_1 : E), x_1 ∈ Metric.ball x r → dist (OfNat.ofNat 0 x_1) (f' n.fst x_1 - f' n.snd x_1) < q
y : E
hy : y ∈ Metric.ball x r
⊢ dist (OfNat.ofNat 0 y) (f n.fst y - f n.snd y - (f n.fst x - f n.snd x)) < ε

tactic: have mvt :=
  Convex.norm_image_sub_le_of_norm_hasFDerivWithin_le
    (fun z hz => ((hf n.1 z hz).sub (hf n.2 z hz)).hasFDerivWithinAt) (fun z hz => (hn z hz).le)
    (convex_ball x r) (Metric.mem_ball_self hr) hy
state_before: case inr.left.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
r : ℝ
hf' :
  ∀ (ε : ℝ),
    ε > 0 →
      ∀ᶠ (n : ι × ι) in l ×ˢ l,
        ∀ (x_1 : E), x_1 ∈ Metric.ball x r → dist (OfNat.ofNat 0 x_1) (f' n.fst x_1 - f' n.snd x_1) < ε
hf : ∀ (n : ι) (y : E), y ∈ Metric.ball x r → HasFDerivAt (f n) (f' n y) y
hfg : Cauchy (map (fun n => f n x) l)
this✝ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
this : NeBot l
hr : 0 < r
ε : ℝ
hε : ε > 0
q : ℝ
hqpos : 0 < q
hq : q * r < ε
n : ι × ι
y : E
hy : y ∈ Metric.ball x r
hn : ∀ (x_1 : E), x_1 ∈ Metric.ball x r → ‖f' n.fst x_1 - f' n.snd x_1‖ < q
⊢ ‖f n.fst y - f n.snd y - (f n.fst x - f n.snd x)‖ < ε

tactic: refine' lt_of_le_of_lt mvt _
state_before: case inr.left.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
r : ℝ
hf' :
  ∀ (ε : ℝ),
    ε > 0 →
      ∀ᶠ (n : ι × ι) in l ×ˢ l,
        ∀ (x_1 : E), x_1 ∈ Metric.ball x r → dist (OfNat.ofNat 0 x_1) (f' n.fst x_1 - f' n.snd x_1) < ε
hf : ∀ (n : ι) (y : E), y ∈ Metric.ball x r → HasFDerivAt (f n) (f' n y) y
hfg : Cauchy (map (fun n => f n x) l)
this✝ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
this : NeBot l
hr : 0 < r
ε : ℝ
hε : ε > 0
q : ℝ
hqpos : 0 < q
hq : q * r < ε
n : ι × ι
y : E
hy : y ∈ Metric.ball x r
hn : ∀ (x_1 : E), x_1 ∈ Metric.ball x r → ‖f' n.fst x_1 - f' n.snd x_1‖ < q
mvt : ‖f n.fst y - f n.snd y - (f n.fst x - f n.snd x)‖ ≤ q * ‖y - x‖
⊢ ‖f n.fst y - f n.snd y - (f n.fst x - f n.snd x)‖ < ε

tactic: have : q * ‖y - x‖ < q * r :=
  mul_lt_mul' rfl.le (by simpa only [dist_eq_norm] using Metric.mem_ball.mp hy) (norm_nonneg _)
    hqpos
state_before: case inr.left.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
r : ℝ
hf' :
  ∀ (ε : ℝ),
    ε > 0 →
      ∀ᶠ (n : ι × ι) in l ×ˢ l,
        ∀ (x_1 : E), x_1 ∈ Metric.ball x r → dist (OfNat.ofNat 0 x_1) (f' n.fst x_1 - f' n.snd x_1) < ε
hf : ∀ (n : ι) (y : E), y ∈ Metric.ball x r → HasFDerivAt (f n) (f' n y) y
hfg : Cauchy (map (fun n => f n x) l)
this✝ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
this : NeBot l
hr : 0 < r
ε : ℝ
hε : ε > 0
q : ℝ
hqpos : 0 < q
hq : q * r < ε
n : ι × ι
y : E
hy : y ∈ Metric.ball x r
hn : ∀ (x_1 : E), x_1 ∈ Metric.ball x r → ‖f' n.fst x_1 - f' n.snd x_1‖ < q
mvt : ‖f n.fst y - f n.snd y - (f n.fst x - f n.snd x)‖ ≤ q * ‖y - x‖
⊢ q * ‖y - x‖ < ε

tactic: exact this.trans hq
state_before: case inr.left.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
r : ℝ
hf' :
  ∀ (ε : ℝ),
    ε > 0 →
      ∀ᶠ (n : ι × ι) in l ×ˢ l,
        ∀ (x_1 : E), x_1 ∈ Metric.ball x r → dist (OfNat.ofNat 0 x_1) (f' n.fst x_1 - f' n.snd x_1) < ε
hf : ∀ (n : ι) (y : E), y ∈ Metric.ball x r → HasFDerivAt (f n) (f' n y) y
hfg : Cauchy (map (fun n => f n x) l)
this✝¹ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
this✝ : NeBot l
hr : 0 < r
ε : ℝ
hε : ε > 0
q : ℝ
hqpos : 0 < q
hq : q * r < ε
n : ι × ι
y : E
hy : y ∈ Metric.ball x r
hn : ∀ (x_1 : E), x_1 ∈ Metric.ball x r → ‖f' n.fst x_1 - f' n.snd x_1‖ < q
mvt : ‖f n.fst y - f n.snd y - (f n.fst x - f n.snd x)‖ ≤ q * ‖y - x‖
this : q * ‖y - x‖ < q * r
⊢ q * ‖y - x‖ < ε

tactic: simp_rw [mul_comm]
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
r : ℝ
hf' :
  ∀ (ε : ℝ),
    ε > 0 →
      ∀ᶠ (n : ι × ι) in l ×ˢ l,
        ∀ (x_1 : E), x_1 ∈ Metric.ball x r → dist (OfNat.ofNat 0 x_1) (f' n.fst x_1 - f' n.snd x_1) < ε
hf : ∀ (n : ι) (y : E), y ∈ Metric.ball x r → HasFDerivAt (f n) (f' n y) y
hfg : Cauchy (map (fun n => f n x) l)
this✝ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
this : NeBot l
hr : 0 < r
ε : ℝ
hε : ε > 0
⊢ ∃ q, 0 < q ∧ q * r < ε

tactic: exact exists_pos_mul_lt hε.lt r
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
r : ℝ
hf' :
  ∀ (ε : ℝ),
    ε > 0 →
      ∀ᶠ (n : ι × ι) in l ×ˢ l,
        ∀ (x_1 : E), x_1 ∈ Metric.ball x r → dist (OfNat.ofNat 0 x_1) (f' n.fst x_1 - f' n.snd x_1) < ε
hf : ∀ (n : ι) (y : E), y ∈ Metric.ball x r → HasFDerivAt (f n) (f' n y) y
hfg : Cauchy (map (fun n => f n x) l)
this✝ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
this : NeBot l
hr : 0 < r
ε : ℝ
hε : ε > 0
⊢ ∃ q, 0 < q ∧ r * q < ε

tactic: simpa only [dist_eq_norm] using Metric.mem_ball.mp 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
r : ℝ
hf' :
  ∀ (ε : ℝ),
    ε > 0 →
      ∀ᶠ (n : ι × ι) in l ×ˢ l,
        ∀ (x_1 : E), x_1 ∈ Metric.ball x r → dist (OfNat.ofNat 0 x_1) (f' n.fst x_1 - f' n.snd x_1) < ε
hf : ∀ (n : ι) (y : E), y ∈ Metric.ball x r → HasFDerivAt (f n) (f' n y) y
hfg : Cauchy (map (fun n => f n x) l)
this✝ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
this : NeBot l
hr : 0 < r
ε : ℝ
hε : ε > 0
q : ℝ
hqpos : 0 < q
hq : q * r < ε
n : ι × ι
y : E
hy : y ∈ Metric.ball x r
hn : ∀ (x_1 : E), x_1 ∈ Metric.ball x r → ‖f' n.fst x_1 - f' n.snd x_1‖ < q
mvt : ‖f n.fst y - f n.snd y - (f n.fst x - f n.snd x)‖ ≤ q * ‖y - x‖
⊢ ‖y - x‖ < r

tactic: refine' Metric.tendstoUniformlyOn_iff.mpr fun ε hε => _
state_before: case inr.right
ι : 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
r : ℝ
hf' : TendstoUniformlyOn (fun n z => f' n.fst z - f' n.snd z) 0 (l ×ˢ l) (Metric.ball x r)
hf : ∀ (n : ι) (y : E), y ∈ Metric.ball x r → HasFDerivAt (f n) (f' n y) y
hfg : Cauchy (map (fun n => f n x) l)
this✝ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
this : NeBot l
hr : 0 < r
⊢ TendstoUniformlyOn (fun n x_1 => f n.fst x - f n.snd x) 0 (l ×ˢ l) (Metric.ball x r)

tactic: obtain ⟨t, ht, ht'⟩ := (Metric.cauchy_iff.mp hfg).2 ε hε
state_before: case inr.right
ι : 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
r : ℝ
hf' : TendstoUniformlyOn (fun n z => f' n.fst z - f' n.snd z) 0 (l ×ˢ l) (Metric.ball x r)
hf : ∀ (n : ι) (y : E), y ∈ Metric.ball x r → HasFDerivAt (f n) (f' n y) y
hfg : Cauchy (map (fun n => f n x) l)
this✝ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
this : NeBot l
hr : 0 < r
ε : ℝ
hε : ε > 0
⊢ ∀ᶠ (n : ι × ι) in l ×ˢ l, ∀ (x_1 : E), x_1 ∈ Metric.ball x r → dist (OfNat.ofNat 0 x_1) (f n.fst x - f n.snd x) < ε

tactic: rw [eventually_prod_iff]
state_before: case inr.right.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
r : ℝ
hf' : TendstoUniformlyOn (fun n z => f' n.fst z - f' n.snd z) 0 (l ×ˢ l) (Metric.ball x r)
hf : ∀ (n : ι) (y : E), y ∈ Metric.ball x r → HasFDerivAt (f n) (f' n y) y
hfg : Cauchy (map (fun n => f n x) l)
this✝ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
this : NeBot l
hr : 0 < r
ε : ℝ
hε : ε > 0
t : Set G
ht : t ∈ map (fun n => f n x) l
ht' : ∀ (x : G), x ∈ t → ∀ (y : G), y ∈ t → dist x y < ε
⊢ ∀ᶠ (n : ι × ι) in l ×ˢ l, ∀ (x_1 : E), x_1 ∈ Metric.ball x r → dist (OfNat.ofNat 0 x_1) (f n.fst x - f n.snd x) < ε

tactic: refine' ⟨fun n => f n x ∈ t, ht, fun n => f n x ∈ t, ht, _⟩
state_before: case inr.right.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
r : ℝ
hf' : TendstoUniformlyOn (fun n z => f' n.fst z - f' n.snd z) 0 (l ×ˢ l) (Metric.ball x r)
hf : ∀ (n : ι) (y : E), y ∈ Metric.ball x r → HasFDerivAt (f n) (f' n y) y
hfg : Cauchy (map (fun n => f n x) l)
this✝ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
this : NeBot l
hr : 0 < r
ε : ℝ
hε : ε > 0
t : Set G
ht : t ∈ map (fun n => f n x) l
ht' : ∀ (x : G), x ∈ t → ∀ (y : G), y ∈ t → dist x y < ε
⊢ ∃ pa,
    (∀ᶠ (x : ι) in l, pa x) ∧
      ∃ pb,
        (∀ᶠ (y : ι) in l, pb y) ∧
          ∀ {x_1 : ι},
            pa x_1 →
              ∀ {y : ι},
                pb y →
                  ∀ (x_2 : E),
                    x_2 ∈ Metric.ball x r → dist (OfNat.ofNat 0 x_2) (f (x_1, y).fst x - f (x_1, y).snd x) < ε

tactic: intro n hn n' hn' z _
state_before: case inr.right.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
r : ℝ
hf' : TendstoUniformlyOn (fun n z => f' n.fst z - f' n.snd z) 0 (l ×ˢ l) (Metric.ball x r)
hf : ∀ (n : ι) (y : E), y ∈ Metric.ball x r → HasFDerivAt (f n) (f' n y) y
hfg : Cauchy (map (fun n => f n x) l)
this✝ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
this : NeBot l
hr : 0 < r
ε : ℝ
hε : ε > 0
t : Set G
ht : t ∈ map (fun n => f n x) l
ht' : ∀ (x : G), x ∈ t → ∀ (y : G), y ∈ t → dist x y < ε
⊢ ∀ {x_1 : ι},
    (fun n => f n x ∈ t) x_1 →
      ∀ {y : ι},
        (fun n => f n x ∈ t) y →
          ∀ (x_2 : E), x_2 ∈ Metric.ball x r → dist (OfNat.ofNat 0 x_2) (f (x_1, y).fst x - f (x_1, y).snd x) < ε

tactic: rw [dist_eq_norm, Pi.zero_apply, zero_sub, norm_neg, ← dist_eq_norm]
state_before: case inr.right.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
r : ℝ
hf' : TendstoUniformlyOn (fun n z => f' n.fst z - f' n.snd z) 0 (l ×ˢ l) (Metric.ball x r)
hf : ∀ (n : ι) (y : E), y ∈ Metric.ball x r → HasFDerivAt (f n) (f' n y) y
hfg : Cauchy (map (fun n => f n x) l)
this✝ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
this : NeBot l
hr : 0 < r
ε : ℝ
hε : ε > 0
t : Set G
ht : t ∈ map (fun n => f n x) l
ht' : ∀ (x : G), x ∈ t → ∀ (y : G), y ∈ t → dist x y < ε
n : ι
hn : f n x ∈ t
n' : ι
hn' : f n' x ∈ t
z : E
a✝ : z ∈ Metric.ball x r
⊢ dist (OfNat.ofNat 0 z) (f (n, n').fst x - f (n, n').snd x) < ε

tactic: exact ht' _ hn _ hn'
state_before: case inr.right.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
r : ℝ
hf' : TendstoUniformlyOn (fun n z => f' n.fst z - f' n.snd z) 0 (l ×ˢ l) (Metric.ball x r)
hf : ∀ (n : ι) (y : E), y ∈ Metric.ball x r → HasFDerivAt (f n) (f' n y) y
hfg : Cauchy (map (fun n => f n x) l)
this✝ : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
this : NeBot l
hr : 0 < r
ε : ℝ
hε : ε > 0
t : Set G
ht : t ∈ map (fun n => f n x) l
ht' : ∀ (x : G), x ∈ t → ∀ (y : G), y ∈ t → dist x y < ε
n : ι
hn : f n x ∈ t
n' : ι
hn' : f n' x ∈ t
z : E
a✝ : z ∈ Metric.ball x r
⊢ dist (f (n, n').fst x) (f (n, n').snd x) < ε