-- Mathlib/Analysis/Calculus/Deriv/Comp.lean
theorem HasStrictDerivAt.comp_hasStrictFDerivAt {f : E → 𝕜'} {f' : E →L[𝕜] 𝕜'} (x)
    (hh : HasStrictDerivAt h₂ h₂' (f x)) (hf : HasStrictFDerivAt f f' x) :
    HasStrictFDerivAt (h₂ ∘ f) (h₂' • f') x

Proof state:
case h.e'_12.h.e
𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type w
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
𝕜' : Type u_1
inst✝¹ : NontriviallyNormedField 𝕜'
inst✝ : NormedAlgebra 𝕜 𝕜'
h₂ : 𝕜' → 𝕜'
h₂' : 𝕜'
f : E → 𝕜'
f' : E →L[𝕜] 𝕜'
x : E
hh : HasStrictFDerivAt h₂ (smulRight 1 h₂') (f x)
hf : HasStrictFDerivAt f f' x
⊢ HSMul.hSMul h₂' = (ContinuousLinearMap.restrictScalars 𝕜 (smulRight 1 h₂')).comp

Tactic:
ext x

Result:
case h.e'_12.h.e.h.h
𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type w
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
𝕜' : Type u_1
inst✝¹ : NontriviallyNormedField 𝕜'
inst✝ : NormedAlgebra 𝕜 𝕜'
h₂ : 𝕜' → 𝕜'
h₂' : 𝕜'
f : E → 𝕜'
f' : E →L[𝕜] 𝕜'
x✝¹ : E
hh : HasStrictFDerivAt h₂ (smulRight 1 h₂') (f x✝¹)
hf : HasStrictFDerivAt f f' x✝¹
x : E →L[𝕜] 𝕜'
x✝ : E
⊢ (h₂' • x) x✝ = ((ContinuousLinearMap.restrictScalars 𝕜 (smulRight 1 h₂')).comp x) x✝

Proof state:
case h.e'_12.h.e.h.h
𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type w
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
𝕜' : Type u_1
inst✝¹ : NontriviallyNormedField 𝕜'
inst✝ : NormedAlgebra 𝕜 𝕜'
h₂ : 𝕜' → 𝕜'
h₂' : 𝕜'
f : E → 𝕜'
f' : E →L[𝕜] 𝕜'
x✝¹ : E
hh : HasStrictFDerivAt h₂ (smulRight 1 h₂') (f x✝¹)
hf : HasStrictFDerivAt f f' x✝¹
x : E →L[𝕜] 𝕜'
x✝ : E
⊢ (h₂' • x) x✝ = ((ContinuousLinearMap.restrictScalars 𝕜 (smulRight 1 h₂')).comp x) x✝

Tactic:
simp [mul_comm]

Result:
no goals

Proof state:
𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type w
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
𝕜' : Type u_1
inst✝¹ : NontriviallyNormedField 𝕜'
inst✝ : NormedAlgebra 𝕜 𝕜'
h₂ : 𝕜' → 𝕜'
h₂' : 𝕜'
f : E → 𝕜'
f' : E →L[𝕜] 𝕜'
x : E
hh : HasStrictDerivAt h₂ h₂' (f x)
hf : HasStrictFDerivAt f f' x
⊢ HasStrictFDerivAt (h₂ ∘ f) (h₂' • f') x

Tactic:
rw [HasStrictDerivAt] at hh

Result:
𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type w
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
𝕜' : Type u_1
inst✝¹ : NontriviallyNormedField 𝕜'
inst✝ : NormedAlgebra 𝕜 𝕜'
h₂ : 𝕜' → 𝕜'
h₂' : 𝕜'
f : E → 𝕜'
f' : E →L[𝕜] 𝕜'
x : E
hh : HasStrictFDerivAt h₂ (smulRight 1 h₂') (f x)
hf : HasStrictFDerivAt f f' x
⊢ HasStrictFDerivAt (h₂ ∘ f) (h₂' • f') x

Proof state:
𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type w
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
𝕜' : Type u_1
inst✝¹ : NontriviallyNormedField 𝕜'
inst✝ : NormedAlgebra 𝕜 𝕜'
h₂ : 𝕜' → 𝕜'
h₂' : 𝕜'
f : E → 𝕜'
f' : E →L[𝕜] 𝕜'
x : E
hh : HasStrictFDerivAt h₂ (smulRight 1 h₂') (f x)
hf : HasStrictFDerivAt f f' x
⊢ HasStrictFDerivAt (h₂ ∘ f) (h₂' • f') x

Tactic:
convert (hh.restrictScalars 𝕜).comp x hf

Result:
case h.e'_12.h.e
𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type w
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
𝕜' : Type u_1
inst✝¹ : NontriviallyNormedField 𝕜'
inst✝ : NormedAlgebra 𝕜 𝕜'
h₂ : 𝕜' → 𝕜'
h₂' : 𝕜'
f : E → 𝕜'
f' : E →L[𝕜] 𝕜'
x : E
hh : HasStrictFDerivAt h₂ (smulRight 1 h₂') (f x)
hf : HasStrictFDerivAt f f' x
⊢ HSMul.hSMul h₂' = (ContinuousLinearMap.restrictScalars 𝕜 (smulRight 1 h₂')).comp