-- Mathlib/Analysis/Calculus/FDeriv/Basic.lean
theorem HasFDerivWithinAt.lim (h : HasFDerivWithinAt f f' s x) {α : Type*} (l : Filter α)
    {c : α → 𝕜} {d : α → E} {v : E} (dtop : ∀ᶠ n in l, x + d n ∈ s)
    (clim : Tendsto (fun n => ‖c n‖) l atTop) (cdlim : Tendsto (fun n => c n • d n) l (𝓝 v)) :
    Tendsto (fun n => c n • (f (x + d n) - f x)) l (𝓝 (f' v))

Proof state:
𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type u_3
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
f : E → F
f' : E →L[𝕜] F
x : E
s : Set E
h : HasFDerivWithinAt f f' s x
α : Type u_4
l : Filter α
c : α → 𝕜
d : α → E
v : E
dtop : ∀ᶠ (n : α) in l, x + d n ∈ s
clim : Tendsto (fun n => ‖c n‖) l atTop
cdlim : Tendsto (fun n => c n • d n) l (𝓝 v)
⊢ Tendsto (fun n => x + d n) l (𝓝[s] x)

Tactic:
conv in 𝓝[s] x => rw [← add_zero x]

Result:
𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type u_3
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
f : E → F
f' : E →L[𝕜] F
x : E
s : Set E
h : HasFDerivWithinAt f f' s x
α : Type u_4
l : Filter α
c : α → 𝕜
d : α → E
v : E
dtop : ∀ᶠ (n : α) in l, x + d n ∈ s
clim : Tendsto (fun n => ‖c n‖) l atTop
cdlim : Tendsto (fun n => c n • d n) l (𝓝 v)
⊢ Tendsto (fun n => x + d n) l (𝓝[s] (x + 0))

Proof state:
𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type u_3
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
f : E → F
f' : E →L[𝕜] F
x : E
s : Set E
h : HasFDerivWithinAt f f' s x
α : Type u_4
l : Filter α
c : α → 𝕜
d : α → E
v : E
dtop : ∀ᶠ (n : α) in l, x + d n ∈ s
clim : Tendsto (fun n => ‖c n‖) l atTop
cdlim : Tendsto (fun n => c n • d n) l (𝓝 v)
tendsto_arg : Tendsto (fun n => x + d n) l (𝓝[s] x)
this✝ : (fun y => f y - f x - f' (y - x)) =o[𝓝[s] x] fun y => y - x
this : (fun n => f (x + d n) - f x - f' (x + d n - x)) =o[l] fun n => x + d n - x
⊢ Tendsto (fun n => c n • (f (x + d n) - f x)) l (𝓝 (f' v))

Tactic:
have : (fun n => f (x + d n) - f x - f' (d n)) =o[l] d := by simpa only [add_sub_cancel_left]

Result:
𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type u_3
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
f : E → F
f' : E →L[𝕜] F
x : E
s : Set E
h : HasFDerivWithinAt f f' s x
α : Type u_4
l : Filter α
c : α → 𝕜
d : α → E
v : E
dtop : ∀ᶠ (n : α) in l, x + d n ∈ s
clim : Tendsto (fun n => ‖c n‖) l atTop
cdlim : Tendsto (fun n => c n • d n) l (𝓝 v)
tendsto_arg : Tendsto (fun n => x + d n) l (𝓝[s] x)
this✝¹ : (fun y => f y - f x - f' (y - x)) =o[𝓝[s] x] fun y => y - x
this✝ : (fun n => f (x + d n) - f x - f' (x + d n - x)) =o[l] fun n => x + d n - x
this : (fun n => f (x + d n) - f x - f' (d n)) =o[l] d
⊢ Tendsto (fun n => c n • (f (x + d n) - f x)) l (𝓝 (f' v))

Proof state:
case left
𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type u_3
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
f : E → F
f' : E →L[𝕜] F
x : E
s : Set E
h : HasFDerivWithinAt f f' s x
α : Type u_4
l : Filter α
c : α → 𝕜
d : α → E
v : E
dtop : ∀ᶠ (n : α) in l, x + d n ∈ s
clim : Tendsto (fun n => ‖c n‖) l atTop
cdlim : Tendsto (fun n => c n • d n) l (𝓝 v)
⊢ Tendsto (fun n => x + d n) l (𝓝 (x + 0))

Tactic:
apply tendsto_const_nhds.add (tangentConeAt.lim_zero l clim cdlim)

Result:
no goals

Proof state:
case right
𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type u_3
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
f : E → F
f' : E →L[𝕜] F
x : E
s : Set E
h : HasFDerivWithinAt f f' s x
α : Type u_4
l : Filter α
c : α → 𝕜
d : α → E
v : E
dtop : ∀ᶠ (n : α) in l, x + d n ∈ s
clim : Tendsto (fun n => ‖c n‖) l atTop
cdlim : Tendsto (fun n => c n • d n) l (𝓝 v)
⊢ Tendsto (fun n => x + d n) l (𝓟 s)

Tactic:
rwa [tendsto_principal]

Result:
no goals

Proof state:
𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type u_3
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
f : E → F
f' : E →L[𝕜] F
x : E
s : Set E
h : HasFDerivWithinAt f f' s x
α : Type u_4
l : Filter α
c : α → 𝕜
d : α → E
v : E
dtop : ∀ᶠ (n : α) in l, x + d n ∈ s
clim : Tendsto (fun n => ‖c n‖) l atTop
cdlim : Tendsto (fun n => c n • d n) l (𝓝 v)
tendsto_arg : Tendsto (fun n => x + d n) l (𝓝[s] x)
this✝³ : (fun y => f y - f x - f' (y - x)) =o[𝓝[s] x] fun y => y - x
this✝² : (fun n => f (x + d n) - f x - f' (x + d n - x)) =o[l] fun n => x + d n - x
this✝¹ : (fun n => f (x + d n) - f x - f' (d n)) =o[l] d
this✝ : (fun n => c n • (f (x + d n) - f x - f' (d n))) =o[l] fun n => c n • d n
this : (fun n => c n • (f (x + d n) - f x - f' (d n))) =o[l] fun x => 1
L1 : Tendsto (fun n => c n • (f (x + d n) - f x - f' (d n))) l (𝓝 0)
⊢ Tendsto (fun n => c n • (f (x + d n) - f x)) l (𝓝 (f' v))

Tactic:
have L2 : Tendsto (fun n => f' (c n • d n)) l (𝓝 (f' v)) :=
  Tendsto.comp f'.cont.continuousAt cdlim

Result:
𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type u_3
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
f : E → F
f' : E →L[𝕜] F
x : E
s : Set E
h : HasFDerivWithinAt f f' s x
α : Type u_4
l : Filter α
c : α → 𝕜
d : α → E
v : E
dtop : ∀ᶠ (n : α) in l, x + d n ∈ s
clim : Tendsto (fun n => ‖c n‖) l atTop
cdlim : Tendsto (fun n => c n • d n) l (𝓝 v)
tendsto_arg : Tendsto (fun n => x + d n) l (𝓝[s] x)
this✝³ : (fun y => f y - f x - f' (y - x)) =o[𝓝[s] x] fun y => y - x
this✝² : (fun n => f (x + d n) - f x - f' (x + d n - x)) =o[l] fun n => x + d n - x
this✝¹ : (fun n => f (x + d n) - f x - f' (d n)) =o[l] d
this✝ : (fun n => c n • (f (x + d n) - f x - f' (d n))) =o[l] fun n => c n • d n
this : (fun n => c n • (f (x + d n) - f x - f' (d n))) =o[l] fun x => 1
L1 : Tendsto (fun n => c n • (f (x + d n) - f x - f' (d n))) l (𝓝 0)
L2 : Tendsto (fun n => f' (c n • d n)) l (𝓝 (f' v))
⊢ Tendsto (fun n => c n • (f (x + d n) - f x)) l (𝓝 (f' v))

Proof state:
𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type u_3
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
f : E → F
f' : E →L[𝕜] F
x : E
s : Set E
h : HasFDerivWithinAt f f' s x
α : Type u_4
l : Filter α
c : α → 𝕜
d : α → E
v : E
dtop : ∀ᶠ (n : α) in l, x + d n ∈ s
clim : Tendsto (fun n => ‖c n‖) l atTop
cdlim : Tendsto (fun n => c n • d n) l (𝓝 v)
⊢ Tendsto (fun n => x + d n) l (𝓝 (x + 0)) ∧ Tendsto (fun n => x + d n) l (𝓟 s)

Tactic:
constructor

Result:
case left
𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type u_3
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
f : E → F
f' : E →L[𝕜] F
x : E
s : Set E
h : HasFDerivWithinAt f f' s x
α : Type u_4
l : Filter α
c : α → 𝕜
d : α → E
v : E
dtop : ∀ᶠ (n : α) in l, x + d n ∈ s
clim : Tendsto (fun n => ‖c n‖) l atTop
cdlim : Tendsto (fun n => c n • d n) l (𝓝 v)
⊢ Tendsto (fun n => x + d n) l (𝓝 (x + 0))

case right
𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type u_3
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
f : E → F
f' : E →L[𝕜] F
x : E
s : Set E
h : HasFDerivWithinAt f f' s x
α : Type u_4
l : Filter α
c : α → 𝕜
d : α → E
v : E
dtop : ∀ᶠ (n : α) in l, x + d n ∈ s
clim : Tendsto (fun n => ‖c n‖) l atTop
cdlim : Tendsto (fun n => c n • d n) l (𝓝 v)
⊢ Tendsto (fun n => x + d n) l (𝓟 s)