-- 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_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))
L3 : Tendsto (fun n => c n • (f (x + d n) - f x - f' (d n)) + f' (c n • d n)) l (𝓝 (0 + f' v))
this : (fun n => c n • (f (x + d n) - f x - f' (d n)) + f' (c n • d n)) = fun n => c n • (f (x + d n) - f x)
⊢ Tendsto (fun n => c n • (f (x + d n) - f x)) l (𝓝 (f' v))

Tactic:
rwa [this, zero_add] at L3

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)
⊢ Tendsto (fun n => c n • (f (x + d n) - f x)) l (𝓝 (f' v))

Tactic:
have : (fun y => f y - f x - f' (y - x)) =o[𝓝[s] x] fun y => y - x := h.isLittleO

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
⊢ 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_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
⊢ 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' (x + d n - x)) =o[l] fun n => x + d n - x :=
  this.comp_tendsto tendsto_arg

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
⊢ Tendsto (fun n => c n • (f (x + d n) - f x)) l (𝓝 (f' v))

Proof state:
case h
𝕜 : 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))
L3 : Tendsto (fun n => c n • (f (x + d n) - f x - f' (d n)) + f' (c n • d n)) l (𝓝 (0 + f' v))
n : α
⊢ c n • (f (x + d n) - f x - f' (d n)) + f' (c n • d n) = c n • (f (x + d n) - f x)

Tactic:
simp [smul_add, smul_sub]

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
⊢ Tendsto (fun n => c n • (f (x + d n) - f x)) l (𝓝 (f' v))

Tactic:
have : (fun n => c n • (f (x + d n) - f x - f' (d n))) =o[l] fun n => c n • d n :=
  (isBigO_refl c l).smul_isLittleO this

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
⊢ Tendsto (fun n => c n • (f (x + d n) - f x)) l (𝓝 (f' v))