Theorem: iteratedDeriv_const_smul
File: Mathlib/Analysis/Calculus/IteratedDeriv/Lemmas.lean

tactic: simp
state_before: case zero
𝕜 : Type u_1
inst✝⁶ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
R : Type u_3
inst✝³ : Semiring R
inst✝² : Module R F
inst✝¹ : SMulCommClass 𝕜 R F
inst✝ : ContinuousConstSMul R F
n : ℕ
x : 𝕜
s : Set 𝕜
hx : x ∈ s
h✝ : UniqueDiffOn 𝕜 s
f✝ g f : 𝕜 → F
c : 𝕜
h : ContDiff 𝕜 (↑0) f
⊢ (iteratedDeriv 0 fun x => f (c * x)) = fun x => c ^ 0 • iteratedDeriv 0 f (c * x)
state_after: no goals

tactic: funext x
state_before: case succ
𝕜 : Type u_1
inst✝⁶ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
R : Type u_3
inst✝³ : Semiring R
inst✝² : Module R F
inst✝¹ : SMulCommClass 𝕜 R F
inst✝ : ContinuousConstSMul R F
n✝ : ℕ
x : 𝕜
s : Set 𝕜
hx : x ∈ s
h✝ : UniqueDiffOn 𝕜 s
f✝ g f : 𝕜 → F
c : 𝕜
n : ℕ
ih : ContDiff 𝕜 (↑n) f → (iteratedDeriv n fun x => f (c * x)) = fun x => c ^ n • iteratedDeriv n f (c * x)
h : ContDiff 𝕜 (↑(n + 1)) f
⊢ (iteratedDeriv (n + 1) fun x => f (c * x)) = fun x => c ^ (n + 1) • iteratedDeriv (n + 1) f (c * x)
state_after: case succ.h
𝕜 : Type u_1
inst✝⁶ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
R : Type u_3
inst✝³ : Semiring R
inst✝² : Module R F
inst✝¹ : SMulCommClass 𝕜 R F
inst✝ : ContinuousConstSMul R F
n✝ : ℕ
x✝ : 𝕜
s : Set 𝕜
hx : x✝ ∈ s
h✝ : UniqueDiffOn 𝕜 s
f✝ g f : 𝕜 → F
c : 𝕜
n : ℕ
ih : ContDiff 𝕜 (↑n) f → (iteratedDeriv n fun x => f (c * x)) = fun x => c ^ n • iteratedDeriv n f (c * x)
h : ContDiff 𝕜 (↑(n + 1)) f
x : 𝕜
⊢ iteratedDeriv (n + 1) (fun x => f (c * x)) x = c ^ (n + 1) • iteratedDeriv (n + 1) f (c * x)

tactic: have h₀ : DifferentiableAt 𝕜 (iteratedDeriv n f) (c * x) :=
  h.differentiable_iteratedDeriv n (Nat.cast_lt.mpr n.lt_succ_self) |>.differentiableAt
state_before: case succ.h
𝕜 : Type u_1
inst✝⁶ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
R : Type u_3
inst✝³ : Semiring R
inst✝² : Module R F
inst✝¹ : SMulCommClass 𝕜 R F
inst✝ : ContinuousConstSMul R F
n✝ : ℕ
x✝ : 𝕜
s : Set 𝕜
hx : x✝ ∈ s
h✝ : UniqueDiffOn 𝕜 s
f✝ g f : 𝕜 → F
c : 𝕜
n : ℕ
ih : ContDiff 𝕜 (↑n) f → (iteratedDeriv n fun x => f (c * x)) = fun x => c ^ n • iteratedDeriv n f (c * x)
h : ContDiff 𝕜 (↑(n + 1)) f
x : 𝕜
⊢ iteratedDeriv (n + 1) (fun x => f (c * x)) x = c ^ (n + 1) • iteratedDeriv (n + 1) f (c * x)
state_after: case succ.h
𝕜 : Type u_1
inst✝⁶ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
R : Type u_3
inst✝³ : Semiring R
inst✝² : Module R F
inst✝¹ : SMulCommClass 𝕜 R F
inst✝ : ContinuousConstSMul R F
n✝ : ℕ
x✝ : 𝕜
s : Set 𝕜
hx : x✝ ∈ s
h✝ : UniqueDiffOn 𝕜 s
f✝ g f : 𝕜 → F
c : 𝕜
n : ℕ
ih : ContDiff 𝕜 (↑n) f → (iteratedDeriv n fun x => f (c * x)) = fun x => c ^ n • iteratedDeriv n f (c * x)
h : ContDiff 𝕜 (↑(n + 1)) f
x : 𝕜
h₀ : DifferentiableAt 𝕜 (iteratedDeriv n f) (c * x)
⊢ iteratedDeriv (n + 1) (fun x => f (c * x)) x = c ^ (n + 1) • iteratedDeriv (n + 1) f (c * x)

tactic: rw [iteratedDeriv_succ, ih h.of_succ, deriv_const_smul _ h₁, iteratedDeriv_succ,
  ← Function.comp_def, deriv.scomp x h₀ (differentiableAt_id'.const_mul _),
  deriv_const_mul _ differentiableAt_id', deriv_id'', smul_smul, mul_one, pow_succ]
state_before: case succ.h
𝕜 : Type u_1
inst✝⁶ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
R : Type u_3
inst✝³ : Semiring R
inst✝² : Module R F
inst✝¹ : SMulCommClass 𝕜 R F
inst✝ : ContinuousConstSMul R F
n✝ : ℕ
x✝ : 𝕜
s : Set 𝕜
hx : x✝ ∈ s
h✝ : UniqueDiffOn 𝕜 s
f✝ g f : 𝕜 → F
c : 𝕜
n : ℕ
ih : ContDiff 𝕜 (↑n) f → (iteratedDeriv n fun x => f (c * x)) = fun x => c ^ n • iteratedDeriv n f (c * x)
h : ContDiff 𝕜 (↑(n + 1)) f
x : 𝕜
h₀ : DifferentiableAt 𝕜 (iteratedDeriv n f) (c * x)
h₁ : DifferentiableAt 𝕜 (fun x => iteratedDeriv n f (c * x)) x
⊢ iteratedDeriv (n + 1) (fun x => f (c * x)) x = c ^ (n + 1) • iteratedDeriv (n + 1) f (c * x)
state_after: no goals

tactic: rw [← Function.comp_def]
state_before: 𝕜 : Type u_1
inst✝⁶ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
R : Type u_3
inst✝³ : Semiring R
inst✝² : Module R F
inst✝¹ : SMulCommClass 𝕜 R F
inst✝ : ContinuousConstSMul R F
n✝ : ℕ
x✝ : 𝕜
s : Set 𝕜
hx : x✝ ∈ s
h✝ : UniqueDiffOn 𝕜 s
f✝ g f : 𝕜 → F
c : 𝕜
n : ℕ
ih : ContDiff 𝕜 (↑n) f → (iteratedDeriv n fun x => f (c * x)) = fun x => c ^ n • iteratedDeriv n f (c * x)
h : ContDiff 𝕜 (↑(n + 1)) f
x : 𝕜
h₀ : DifferentiableAt 𝕜 (iteratedDeriv n f) (c * x)
⊢ DifferentiableAt 𝕜 (fun x => iteratedDeriv n f (c * x)) x
state_after: 𝕜 : Type u_1
inst✝⁶ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
R : Type u_3
inst✝³ : Semiring R
inst✝² : Module R F
inst✝¹ : SMulCommClass 𝕜 R F
inst✝ : ContinuousConstSMul R F
n✝ : ℕ
x✝ : 𝕜
s : Set 𝕜
hx : x✝ ∈ s
h✝ : UniqueDiffOn 𝕜 s
f✝ g f : 𝕜 → F
c : 𝕜
n : ℕ
ih : ContDiff 𝕜 (↑n) f → (iteratedDeriv n fun x => f (c * x)) = fun x => c ^ n • iteratedDeriv n f (c * x)
h : ContDiff 𝕜 (↑(n + 1)) f
x : 𝕜
h₀ : DifferentiableAt 𝕜 (iteratedDeriv n f) (c * x)
⊢ DifferentiableAt 𝕜 (iteratedDeriv n f ∘ HMul.hMul c) x

tactic: apply DifferentiableAt.comp
state_before: 𝕜 : Type u_1
inst✝⁶ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
R : Type u_3
inst✝³ : Semiring R
inst✝² : Module R F
inst✝¹ : SMulCommClass 𝕜 R F
inst✝ : ContinuousConstSMul R F
n✝ : ℕ
x✝ : 𝕜
s : Set 𝕜
hx : x✝ ∈ s
h✝ : UniqueDiffOn 𝕜 s
f✝ g f : 𝕜 → F
c : 𝕜
n : ℕ
ih : ContDiff 𝕜 (↑n) f → (iteratedDeriv n fun x => f (c * x)) = fun x => c ^ n • iteratedDeriv n f (c * x)
h : ContDiff 𝕜 (↑(n + 1)) f
x : 𝕜
h₀ : DifferentiableAt 𝕜 (iteratedDeriv n f) (c * x)
⊢ DifferentiableAt 𝕜 (iteratedDeriv n f ∘ HMul.hMul c) x
state_after: case hg
𝕜 : Type u_1
inst✝⁶ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
R : Type u_3
inst✝³ : Semiring R
inst✝² : Module R F
inst✝¹ : SMulCommClass 𝕜 R F
inst✝ : ContinuousConstSMul R F
n✝ : ℕ
x✝ : 𝕜
s : Set 𝕜
hx : x✝ ∈ s
h✝ : UniqueDiffOn 𝕜 s
f✝ g f : 𝕜 → F
c : 𝕜
n : ℕ
ih : ContDiff 𝕜 (↑n) f → (iteratedDeriv n fun x => f (c * x)) = fun x => c ^ n • iteratedDeriv n f (c * x)
h : ContDiff 𝕜 (↑(n + 1)) f
x : 𝕜
h₀ : DifferentiableAt 𝕜 (iteratedDeriv n f) (c * x)
⊢ DifferentiableAt 𝕜 (iteratedDeriv n f) (c * x)

case hf
𝕜 : Type u_1
inst✝⁶ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
R : Type u_3
inst✝³ : Semiring R
inst✝² : Module R F
inst✝¹ : SMulCommClass 𝕜 R F
inst✝ : ContinuousConstSMul R F
n✝ : ℕ
x✝ : 𝕜
s : Set 𝕜
hx : x✝ ∈ s
h✝ : UniqueDiffOn 𝕜 s
f✝ g f : 𝕜 → F
c : 𝕜
n : ℕ
ih : ContDiff 𝕜 (↑n) f → (iteratedDeriv n fun x => f (c * x)) = fun x => c ^ n • iteratedDeriv n f (c * x)
h : ContDiff 𝕜 (↑(n + 1)) f
x : 𝕜
h₀ : DifferentiableAt 𝕜 (iteratedDeriv n f) (c * x)
⊢ DifferentiableAt 𝕜 (HMul.hMul c) x

tactic: exact h.differentiable_iteratedDeriv n (Nat.cast_lt.mpr n.lt_succ_self) |>.differentiableAt
state_before: case hg
𝕜 : Type u_1
inst✝⁶ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
R : Type u_3
inst✝³ : Semiring R
inst✝² : Module R F
inst✝¹ : SMulCommClass 𝕜 R F
inst✝ : ContinuousConstSMul R F
n✝ : ℕ
x✝ : 𝕜
s : Set 𝕜
hx : x✝ ∈ s
h✝ : UniqueDiffOn 𝕜 s
f✝ g f : 𝕜 → F
c : 𝕜
n : ℕ
ih : ContDiff 𝕜 (↑n) f → (iteratedDeriv n fun x => f (c * x)) = fun x => c ^ n • iteratedDeriv n f (c * x)
h : ContDiff 𝕜 (↑(n + 1)) f
x : 𝕜
h₀ : DifferentiableAt 𝕜 (iteratedDeriv n f) (c * x)
⊢ DifferentiableAt 𝕜 (iteratedDeriv n f) (c * x)
state_after: no goals

tactic: exact differentiableAt_id'.const_mul _
state_before: case hf
𝕜 : Type u_1
inst✝⁶ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
R : Type u_3
inst✝³ : Semiring R
inst✝² : Module R F
inst✝¹ : SMulCommClass 𝕜 R F
inst✝ : ContinuousConstSMul R F
n✝ : ℕ
x✝ : 𝕜
s : Set 𝕜
hx : x✝ ∈ s
h✝ : UniqueDiffOn 𝕜 s
f✝ g f : 𝕜 → F
c : 𝕜
n : ℕ
ih : ContDiff 𝕜 (↑n) f → (iteratedDeriv n fun x => f (c * x)) = fun x => c ^ n • iteratedDeriv n f (c * x)
h : ContDiff 𝕜 (↑(n + 1)) f
x : 𝕜
h₀ : DifferentiableAt 𝕜 (iteratedDeriv n f) (c * x)
⊢ DifferentiableAt 𝕜 (HMul.hMul c) x
state_after: no goals