Imports
/-
Copyright (c) 2025 Afiq Hatta. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Afiq Hatta
-/
module
public import Mathlib.Topology.Algebra.Polynomial
public import Mathlib.Analysis.Calculus.Deriv.Polynomial
public import Mathlib.Analysis.SpecialFunctions.Trigonometric.DerivHyp
public import Mathlib.Analysis.Distribution.TemperateGrowthProperties of Tanh
We want to prove that the reflectionless potential is a Schwartz map. This means proving that pointwise multiplication of a Schwartz map with tanh is a Schwartz map. This means we need to prove that all derivatives of tanh are bounded and continuous, so that the nth derivative of a function multiplied by tanh decays faster than any polynomial.
TODO
Add these to mathlib eventually
Fill in the proofs for the properties of tanh
@[expose] public sectionThe derivative of tanh(x) is 1 - tanh(x)^2
h:deriv (sinh / cosh) = fun x => 1 - tanh x ^ 2h':tanh = sinh / cosh⊢ deriv tanh = fun x => 1 - tanh x ^ 2
nth_rewrite 1 [h'] h:deriv (sinh / cosh) = fun x => 1 - tanh x ^ 2h':tanh = sinh / cosh⊢ deriv (sinh / cosh) = fun x => 1 - tanh x ^ 2
apply h All goals completed! 🐙Tanh(x) is n times continuously differentiable for all n
lemma contDiff_tanh {n : ℕ} : ContDiff ℝ n tanh := by n:ℕ⊢ ContDiff ℝ (↑n) tanh
have hdiv : ContDiff ℝ n (fun x => Real.sinh x / Real.cosh x) := by
apply ContDiff.div hf n:ℕ⊢ ContDiff ℝ (↑n) sinhhg n:ℕ⊢ ContDiff ℝ (↑n) coshh0 n:ℕ⊢ ∀ (x : ℝ), cosh x ≠ 0 n:ℕhdiv:ContDiff ℝ ↑n fun x => sinh x / cosh x⊢ ContDiff ℝ (↑n) tanh
· hf n:ℕ⊢ ContDiff ℝ (↑n) sinh n:ℕhdiv:ContDiff ℝ ↑n fun x => sinh x / cosh x⊢ ContDiff ℝ (↑n) tanh exact contDiff_sinh All goals completed! 🐙 n:ℕhdiv:ContDiff ℝ ↑n fun x => sinh x / cosh x⊢ ContDiff ℝ (↑n) tanh
· hg n:ℕ⊢ ContDiff ℝ (↑n) cosh n:ℕhdiv:ContDiff ℝ ↑n fun x => sinh x / cosh x⊢ ContDiff ℝ (↑n) tanh exact contDiff_cosh All goals completed! 🐙 n:ℕhdiv:ContDiff ℝ ↑n fun x => sinh x / cosh x⊢ ContDiff ℝ (↑n) tanh
· h0 n:ℕ⊢ ∀ (x : ℝ), cosh x ≠ 0 n:ℕhdiv:ContDiff ℝ ↑n fun x => sinh x / cosh x⊢ ContDiff ℝ (↑n) tanh intro x h0 n:ℕx:ℝ⊢ cosh x ≠ 0 n:ℕhdiv:ContDiff ℝ ↑n fun x => sinh x / cosh x⊢ ContDiff ℝ (↑n) tanh
exact ne_of_gt (Real.cosh_pos x) n:ℕhdiv:ContDiff ℝ ↑n fun x => sinh x / cosh x⊢ ContDiff ℝ (↑n) tanh n:ℕhdiv:ContDiff ℝ ↑n fun x => sinh x / cosh x⊢ ContDiff ℝ (↑n) tanh
conv => n:ℕhdiv:ContDiff ℝ ↑n fun x => sinh x / cosh x| ContDiff ℝ (↑n) tanh
enter [3, x] n:ℕhdiv:ContDiff ℝ ↑n fun x => sinh x / cosh xx:ℝ| tanh x
rw [tanh_eq_sinh_div_cosh] n:ℕhdiv:ContDiff ℝ ↑n fun x => sinh x / cosh xx:ℝ| sinh x / cosh x
exact hdiv All goals completed! 🐙The nth derivative of Tanh(x) is a polynomial of Tanh(x)
lemma iteratedDeriv_tanh_is_polynomial_of_tanh (n : ℕ) : ∃ P : Polynomial ℝ, ∀ x,
iteratedDeriv n Real.tanh x = P.eval (Real.tanh x) := by n:ℕ⊢ ∃ P, ∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) P
induction n with
| zero => zero ⊢ ∃ P, ∀ (x : ℝ), iteratedDeriv 0 tanh x = Polynomial.eval (tanh x) P
rw [iteratedDeriv_zero zero ⊢ ∃ P, ∀ (x : ℝ), tanh x = Polynomial.eval (tanh x) P zero ⊢ ∃ P, ∀ (x : ℝ), tanh x = Polynomial.eval (tanh x) P] zero ⊢ ∃ P, ∀ (x : ℝ), tanh x = Polynomial.eval (tanh x) P
use Polynomial.X h ⊢ ∀ (x : ℝ), tanh x = Polynomial.eval (tanh x) Polynomial.X
simp All goals completed! 🐙
| succ n ih => succ n:ℕih:∃ P, ∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) P⊢ ∃ P, ∀ (x : ℝ), iteratedDeriv (n + 1) tanh x = Polynomial.eval (tanh x) P
obtain ⟨P, h'⟩ := ih succ n:ℕP:Polynomial ℝh':∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) P⊢ ∃ P, ∀ (x : ℝ), iteratedDeriv (n + 1) tanh x = Polynomial.eval (tanh x) P
rw [iteratedDeriv_succ succ n:ℕP:Polynomial ℝh':∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) P⊢ ∃ P, ∀ (x : ℝ), deriv (iteratedDeriv n tanh) x = Polynomial.eval (tanh x) P succ n:ℕP:Polynomial ℝh':∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) P⊢ ∃ P, ∀ (x : ℝ), deriv (iteratedDeriv n tanh) x = Polynomial.eval (tanh x) P]succ n:ℕP:Polynomial ℝh':∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) P⊢ ∃ P, ∀ (x : ℝ), deriv (iteratedDeriv n tanh) x = Polynomial.eval (tanh x) P
have h'': iteratedDeriv n tanh = (fun x => Polynomial.eval (tanh x) P) := by n:ℕ⊢ ∃ P, ∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) P succ n:ℕP:Polynomial ℝh':∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) P⊢ ∃ P, ∀ (x : ℝ), deriv (iteratedDeriv n tanh) x = Polynomial.eval (tanh x) P
funext x n:ℕP:Polynomial ℝh':∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Px:ℝ⊢ iteratedDeriv n tanh x = Polynomial.eval (tanh x) Psucc n:ℕP:Polynomial ℝh':∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) P⊢ ∃ P, ∀ (x : ℝ), deriv (iteratedDeriv n tanh) x = Polynomial.eval (tanh x) P
apply h'succ n:ℕP:Polynomial ℝh':∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) P⊢ ∃ P, ∀ (x : ℝ), deriv (iteratedDeriv n tanh) x = Polynomial.eval (tanh x) Psucc n:ℕP:Polynomial ℝh':∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) P⊢ ∃ P, ∀ (x : ℝ), deriv (iteratedDeriv n tanh) x = Polynomial.eval (tanh x) P
have h_comp : (fun x => Polynomial.eval (tanh x) P) = (fun t => P.eval t) ∘ tanh := by n:ℕ⊢ ∃ P, ∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) P succ n:ℕP:Polynomial ℝh':∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanh⊢ ∃ P, ∀ (x : ℝ), deriv (iteratedDeriv n tanh) x = Polynomial.eval (tanh x) P
funext x n:ℕP:Polynomial ℝh':∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Px:ℝ⊢ Polynomial.eval (tanh x) P = ((fun t => Polynomial.eval t P) ∘ tanh) xsucc n:ℕP:Polynomial ℝh':∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanh⊢ ∃ P, ∀ (x : ℝ), deriv (iteratedDeriv n tanh) x = Polynomial.eval (tanh x) P
simp [Function.comp_apply]succ n:ℕP:Polynomial ℝh':∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanh⊢ ∃ P, ∀ (x : ℝ), deriv (iteratedDeriv n tanh) x = Polynomial.eval (tanh x) Psucc n:ℕP:Polynomial ℝh':∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanh⊢ ∃ P, ∀ (x : ℝ), deriv (iteratedDeriv n tanh) x = Polynomial.eval (tanh x) P
rw [h'', succ n:ℕP:Polynomial ℝh':∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanh⊢ ∃ P_1, ∀ (x : ℝ), deriv (fun x => Polynomial.eval (tanh x) P) x = Polynomial.eval (tanh x) P_1 succ n:ℕP:Polynomial ℝh':∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanh⊢ ∃ P_1, ∀ (x : ℝ), deriv ((fun t => Polynomial.eval t P) ∘ tanh) x = Polynomial.eval (tanh x) P_1 h_comp succ n:ℕP:Polynomial ℝh':∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanh⊢ ∃ P_1, ∀ (x : ℝ), deriv ((fun t => Polynomial.eval t P) ∘ tanh) x = Polynomial.eval (tanh x) P_1succ n:ℕP:Polynomial ℝh':∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanh⊢ ∃ P_1, ∀ (x : ℝ), deriv ((fun t => Polynomial.eval t P) ∘ tanh) x = Polynomial.eval (tanh x) P_1]succ n:ℕP:Polynomial ℝh':∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanh⊢ ∃ P_1, ∀ (x : ℝ), deriv ((fun t => Polynomial.eval t P) ∘ tanh) x = Polynomial.eval (tanh x) P_1
use Polynomial.derivative P * (1 - Polynomial.X^2) h n:ℕP:Polynomial ℝh':∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanh⊢ ∀ (x : ℝ),
deriv ((fun t => Polynomial.eval t P) ∘ tanh) x =
Polynomial.eval (tanh x) (Polynomial.derivative P * (1 - Polynomial.X ^ 2))
intro x h n:ℕP:Polynomial ℝh':∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanhx:ℝ⊢ deriv ((fun t => Polynomial.eval t P) ∘ tanh) x =
Polynomial.eval (tanh x) (Polynomial.derivative P * (1 - Polynomial.X ^ 2))
rw [deriv_comp, h n:ℕP:Polynomial ℝh':∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanhx:ℝ⊢ deriv (fun t => Polynomial.eval t P) (tanh x) * deriv tanh x =
Polynomial.eval (tanh x) (Polynomial.derivative P * (1 - Polynomial.X ^ 2))h.hh₂ n:ℕP:Polynomial ℝh':∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanhx:ℝ⊢ DifferentiableAt ℝ (fun t => Polynomial.eval t P) (tanh x)h.hh n:ℕP:Polynomial ℝh':∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanhx:ℝ⊢ DifferentiableAt ℝ tanh x h n:ℕP:Polynomial ℝh':∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanhx:ℝ⊢ Polynomial.eval (tanh x) (Polynomial.derivative P) * (fun x => 1 - tanh x ^ 2) x =
Polynomial.eval (tanh x) (Polynomial.derivative P * (1 - Polynomial.X ^ 2))h.hh₂ n:ℕP:Polynomial ℝh':∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanhx:ℝ⊢ DifferentiableAt ℝ (fun t => Polynomial.eval t P) (tanh x)h.hh n:ℕP:Polynomial ℝh':∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanhx:ℝ⊢ DifferentiableAt ℝ tanh x Polynomial.deriv, h n:ℕP:Polynomial ℝh':∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanhx:ℝ⊢ Polynomial.eval (tanh x) (Polynomial.derivative P) * deriv tanh x =
Polynomial.eval (tanh x) (Polynomial.derivative P * (1 - Polynomial.X ^ 2))h.hh₂ n:ℕP:Polynomial ℝh':∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanhx:ℝ⊢ DifferentiableAt ℝ (fun t => Polynomial.eval t P) (tanh x)h.hh n:ℕP:Polynomial ℝh':∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanhx:ℝ⊢ DifferentiableAt ℝ tanh xh n:ℕP:Polynomial ℝh':∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanhx:ℝ⊢ Polynomial.eval (tanh x) (Polynomial.derivative P) * (fun x => 1 - tanh x ^ 2) x =
Polynomial.eval (tanh x) (Polynomial.derivative P * (1 - Polynomial.X ^ 2))h.hh₂ n:ℕP:Polynomial ℝh':∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanhx:ℝ⊢ DifferentiableAt ℝ (fun t => Polynomial.eval t P) (tanh x)h.hh n:ℕP:Polynomial ℝh':∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanhx:ℝ⊢ DifferentiableAt ℝ tanh x deriv_tanh h n:ℕP:Polynomial ℝh':∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanhx:ℝ⊢ Polynomial.eval (tanh x) (Polynomial.derivative P) * (fun x => 1 - tanh x ^ 2) x =
Polynomial.eval (tanh x) (Polynomial.derivative P * (1 - Polynomial.X ^ 2))h.hh₂ n:ℕP:Polynomial ℝh':∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanhx:ℝ⊢ DifferentiableAt ℝ (fun t => Polynomial.eval t P) (tanh x)h.hh n:ℕP:Polynomial ℝh':∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanhx:ℝ⊢ DifferentiableAt ℝ tanh xh n:ℕP:Polynomial ℝh':∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanhx:ℝ⊢ Polynomial.eval (tanh x) (Polynomial.derivative P) * (fun x => 1 - tanh x ^ 2) x =
Polynomial.eval (tanh x) (Polynomial.derivative P * (1 - Polynomial.X ^ 2))h.hh₂ n:ℕP:Polynomial ℝh':∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanhx:ℝ⊢ DifferentiableAt ℝ (fun t => Polynomial.eval t P) (tanh x)h.hh n:ℕP:Polynomial ℝh':∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanhx:ℝ⊢ DifferentiableAt ℝ tanh x]h n:ℕP:Polynomial ℝh':∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanhx:ℝ⊢ Polynomial.eval (tanh x) (Polynomial.derivative P) * (fun x => 1 - tanh x ^ 2) x =
Polynomial.eval (tanh x) (Polynomial.derivative P * (1 - Polynomial.X ^ 2))h.hh₂ n:ℕP:Polynomial ℝh':∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanhx:ℝ⊢ DifferentiableAt ℝ (fun t => Polynomial.eval t P) (tanh x)h.hh n:ℕP:Polynomial ℝh':∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanhx:ℝ⊢ DifferentiableAt ℝ tanh x
simp only [Polynomial.eval_mul, Polynomial.eval_sub, Polynomial.eval_one, Polynomial.eval_pow,
Polynomial.eval_X] h.hh₂ n:ℕP:Polynomial ℝh':∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanhx:ℝ⊢ DifferentiableAt ℝ (fun t => Polynomial.eval t P) (tanh x)h.hh n:ℕP:Polynomial ℝh':∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanhx:ℝ⊢ DifferentiableAt ℝ tanh x
case h.hh => n:ℕP:Polynomial ℝh':∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanhx:ℝ⊢ DifferentiableAt ℝ tanh x
have h': Real.tanh = (sinh / cosh) := by n:ℕ⊢ ∃ P, ∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) P n:ℕP:Polynomial ℝh'✝:∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanhx:ℝh':tanh = sinh / cosh⊢ DifferentiableAt ℝ tanh x
funext x n:ℕP:Polynomial ℝh':∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanhx✝:ℝx:ℝ⊢ tanh x = (sinh / cosh) x n:ℕP:Polynomial ℝh'✝:∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanhx:ℝh':tanh = sinh / cosh⊢ DifferentiableAt ℝ tanh x
rw [Pi.div_apply, n:ℕP:Polynomial ℝh':∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanhx✝:ℝx:ℝ⊢ tanh x = sinh x / cosh x n:ℕP:Polynomial ℝh'✝:∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanhx:ℝh':tanh = sinh / cosh⊢ DifferentiableAt ℝ tanh x tanh_eq_sinh_div_cosh n:ℕP:Polynomial ℝh':∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanhx✝:ℝx:ℝ⊢ sinh x / cosh x = sinh x / cosh x n:ℕP:Polynomial ℝh'✝:∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanhx:ℝh':tanh = sinh / cosh⊢ DifferentiableAt ℝ tanh x] n:ℕP:Polynomial ℝh'✝:∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanhx:ℝh':tanh = sinh / cosh⊢ DifferentiableAt ℝ tanh x n:ℕP:Polynomial ℝh'✝:∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanhx:ℝh':tanh = sinh / cosh⊢ DifferentiableAt ℝ tanh x
rw [h' n:ℕP:Polynomial ℝh'✝:∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanhx:ℝh':tanh = sinh / cosh⊢ DifferentiableAt ℝ (sinh / cosh) x n:ℕP:Polynomial ℝh'✝:∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanhx:ℝh':tanh = sinh / cosh⊢ DifferentiableAt ℝ (sinh / cosh) x] n:ℕP:Polynomial ℝh'✝:∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanhx:ℝh':tanh = sinh / cosh⊢ DifferentiableAt ℝ (sinh / cosh) x
apply DifferentiableAt.div hc n:ℕP:Polynomial ℝh'✝:∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanhx:ℝh':tanh = sinh / cosh⊢ DifferentiableAt ℝ sinh xhd n:ℕP:Polynomial ℝh'✝:∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanhx:ℝh':tanh = sinh / cosh⊢ DifferentiableAt ℝ cosh xhx n:ℕP:Polynomial ℝh'✝:∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanhx:ℝh':tanh = sinh / cosh⊢ cosh x ≠ 0
· hc n:ℕP:Polynomial ℝh'✝:∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanhx:ℝh':tanh = sinh / cosh⊢ DifferentiableAt ℝ sinh x apply Real.differentiable_sinh All goals completed! 🐙
· hd n:ℕP:Polynomial ℝh'✝:∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanhx:ℝh':tanh = sinh / cosh⊢ DifferentiableAt ℝ cosh x apply Real.differentiable_cosh All goals completed! 🐙
· hx n:ℕP:Polynomial ℝh'✝:∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanhx:ℝh':tanh = sinh / cosh⊢ cosh x ≠ 0 exact ne_of_gt (Real.cosh_pos x) All goals completed! 🐙
case h.hh₂ => n:ℕP:Polynomial ℝh':∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) Ph'':iteratedDeriv n tanh = fun x => Polynomial.eval (tanh x) Ph_comp:(fun x => Polynomial.eval (tanh x) P) = (fun t => Polynomial.eval t P) ∘ tanhx:ℝ⊢ DifferentiableAt ℝ (fun t => Polynomial.eval t P) (tanh x)
apply Polynomial.differentiableAt All goals completed! 🐙For a polynomial P, show it's bounded on any bounded interval
lemma polynomial_bounded_on_interval (P : Polynomial ℝ) (a b : ℝ) :
∃ M : ℝ, ∀ x : ℝ, x ∈ Set.Icc a b → |P.eval x| ≤ M := by P:Polynomial ℝa:ℝb:ℝ⊢ ∃ M, ∀ x ∈ Set.Icc a b, |Polynomial.eval x P| ≤ M
-- Polynomials are continuous
have hcont : Continuous (fun x => P.eval x) := P.continuous P:Polynomial ℝa:ℝb:ℝhcont:Continuous fun x => Polynomial.eval x P⊢ ∃ M, ∀ x ∈ Set.Icc a b, |Polynomial.eval x P| ≤ M
-- Closed bounded intervals are compact
have hcompact : IsCompact (Set.Icc a b) := isCompact_Icc P:Polynomial ℝa:ℝb:ℝhcont:Continuous fun x => Polynomial.eval x Phcompact:IsCompact (Set.Icc a b)⊢ ∃ M, ∀ x ∈ Set.Icc a b, |Polynomial.eval x P| ≤ M
-- Continuous functions on compact sets are bounded
obtain ⟨M, hM⟩ := hcompact.exists_bound_of_continuousOn hcont.continuousOn P:Polynomial ℝa:ℝb:ℝhcont:Continuous fun x => Polynomial.eval x Phcompact:IsCompact (Set.Icc a b)M:ℝhM:∀ x ∈ Set.Icc a b, ‖Polynomial.eval x P‖ ≤ M⊢ ∃ M, ∀ x ∈ Set.Icc a b, |Polynomial.eval x P| ≤ M
use M h P:Polynomial ℝa:ℝb:ℝhcont:Continuous fun x => Polynomial.eval x Phcompact:IsCompact (Set.Icc a b)M:ℝhM:∀ x ∈ Set.Icc a b, ‖Polynomial.eval x P‖ ≤ M⊢ ∀ x ∈ Set.Icc a b, |Polynomial.eval x P| ≤ M
exact hM All goals completed! 🐙For a polynomial P, show that P (tanh x) is bounded on the real line
lemma polynomial_tanh_bounded (P : Polynomial ℝ) :
∃ C : ℝ, ∀ x : ℝ, |P.eval (Real.tanh x)| ≤ C := by P:Polynomial ℝ⊢ ∃ C, ∀ (x : ℝ), |Polynomial.eval (tanh x) P| ≤ C
-- Since tanh maps to (-1, 1), it maps to [-1+ε, 1-ε] for any ε > 0
-- But more directly, tanh maps to (-1, 1) ⊆ [-1, 1]
have h_range : ∀ x : ℝ, Real.tanh x ∈ Set.Icc (-1) 1 := by
intro x P:Polynomial ℝx:ℝ⊢ tanh x ∈ Set.Icc (-1) 1 P:Polynomial ℝh_range:∀ (x : ℝ), tanh x ∈ Set.Icc (-1) 1⊢ ∃ C, ∀ (x : ℝ), |Polynomial.eval (tanh x) P| ≤ C
constructor left P:Polynomial ℝx:ℝ⊢ -1 ≤ tanh xright P:Polynomial ℝx:ℝ⊢ tanh x ≤ 1 P:Polynomial ℝh_range:∀ (x : ℝ), tanh x ∈ Set.Icc (-1) 1⊢ ∃ C, ∀ (x : ℝ), |Polynomial.eval (tanh x) P| ≤ C
· left P:Polynomial ℝx:ℝ⊢ -1 ≤ tanh x P:Polynomial ℝh_range:∀ (x : ℝ), tanh x ∈ Set.Icc (-1) 1⊢ ∃ C, ∀ (x : ℝ), |Polynomial.eval (tanh x) P| ≤ C exact le_of_lt (neg_one_lt_tanh x) All goals completed! 🐙 P:Polynomial ℝh_range:∀ (x : ℝ), tanh x ∈ Set.Icc (-1) 1⊢ ∃ C, ∀ (x : ℝ), |Polynomial.eval (tanh x) P| ≤ C
· right P:Polynomial ℝx:ℝ⊢ tanh x ≤ 1 P:Polynomial ℝh_range:∀ (x : ℝ), tanh x ∈ Set.Icc (-1) 1⊢ ∃ C, ∀ (x : ℝ), |Polynomial.eval (tanh x) P| ≤ C exact le_of_lt (tanh_lt_one x) P:Polynomial ℝh_range:∀ (x : ℝ), tanh x ∈ Set.Icc (-1) 1⊢ ∃ C, ∀ (x : ℝ), |Polynomial.eval (tanh x) P| ≤ C P:Polynomial ℝh_range:∀ (x : ℝ), tanh x ∈ Set.Icc (-1) 1⊢ ∃ C, ∀ (x : ℝ), |Polynomial.eval (tanh x) P| ≤ C
-- Apply polynomial boundedness on [-1, 1]
obtain ⟨M, hM⟩ := polynomial_bounded_on_interval P (-1) 1 P:Polynomial ℝh_range:∀ (x : ℝ), tanh x ∈ Set.Icc (-1) 1M:ℝhM:∀ x ∈ Set.Icc (-1) 1, |Polynomial.eval x P| ≤ M⊢ ∃ C, ∀ (x : ℝ), |Polynomial.eval (tanh x) P| ≤ C
use M h P:Polynomial ℝh_range:∀ (x : ℝ), tanh x ∈ Set.Icc (-1) 1M:ℝhM:∀ x ∈ Set.Icc (-1) 1, |Polynomial.eval x P| ≤ M⊢ ∀ (x : ℝ), |Polynomial.eval (tanh x) P| ≤ M
intro x h P:Polynomial ℝh_range:∀ (x : ℝ), tanh x ∈ Set.Icc (-1) 1M:ℝhM:∀ x ∈ Set.Icc (-1) 1, |Polynomial.eval x P| ≤ Mx:ℝ⊢ |Polynomial.eval (tanh x) P| ≤ M
exact hM (Real.tanh x) (h_range x) All goals completed! 🐙The nth derivative of tanh is bounded on the real line
lemma iteratedDeriv_tanh_bounded (n : ℕ) :
∃ C : ℝ, ∀ x : ℝ, |iteratedDeriv n Real.tanh x| ≤ C := by n:ℕ⊢ ∃ C, ∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ C
obtain ⟨P, hP⟩ := iteratedDeriv_tanh_is_polynomial_of_tanh n n:ℕP:Polynomial ℝhP:∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) P⊢ ∃ C, ∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ C
obtain ⟨C, hC⟩ := polynomial_tanh_bounded P n:ℕP:Polynomial ℝhP:∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) PC:ℝhC:∀ (x : ℝ), |Polynomial.eval (tanh x) P| ≤ C⊢ ∃ C, ∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ C
use C h n:ℕP:Polynomial ℝhP:∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) PC:ℝhC:∀ (x : ℝ), |Polynomial.eval (tanh x) P| ≤ C⊢ ∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ C
intro x h n:ℕP:Polynomial ℝhP:∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) PC:ℝhC:∀ (x : ℝ), |Polynomial.eval (tanh x) P| ≤ Cx:ℝ⊢ |iteratedDeriv n tanh x| ≤ C
rw [hP h n:ℕP:Polynomial ℝhP:∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) PC:ℝhC:∀ (x : ℝ), |Polynomial.eval (tanh x) P| ≤ Cx:ℝ⊢ |Polynomial.eval (tanh x) P| ≤ C h n:ℕP:Polynomial ℝhP:∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) PC:ℝhC:∀ (x : ℝ), |Polynomial.eval (tanh x) P| ≤ Cx:ℝ⊢ |Polynomial.eval (tanh x) P| ≤ C] h n:ℕP:Polynomial ℝhP:∀ (x : ℝ), iteratedDeriv n tanh x = Polynomial.eval (tanh x) PC:ℝhC:∀ (x : ℝ), |Polynomial.eval (tanh x) P| ≤ Cx:ℝ⊢ |Polynomial.eval (tanh x) P| ≤ C
exact hC x All goals completed! 🐙tanh is infinitely differentiable
lemma contDiff_top_tanh : ContDiff ℝ ∞ Real.tanh := by ⊢ ContDiff ℝ ∞ tanh
rw [contDiff_infty ⊢ ∀ (n : ℕ), ContDiff ℝ (↑n) tanh ⊢ ∀ (n : ℕ), ContDiff ℝ (↑n) tanh] ⊢ ∀ (n : ℕ), ContDiff ℝ (↑n) tanh
apply contDiff_tanh All goals completed! 🐙tanh has temperate growth
lemma tanh_hasTemperateGrowth : Function.HasTemperateGrowth Real.tanh := by ⊢ Function.HasTemperateGrowth tanh
constructor left ⊢ ContDiff ℝ ∞ tanhright ⊢ ∀ (n : ℕ), ∃ k C, ∀ (x : ℝ), ‖iteratedFDeriv ℝ n tanh x‖ ≤ C * (1 + ‖x‖) ^ k
· left ⊢ ContDiff ℝ ∞ tanh apply contDiff_top_tanh All goals completed! 🐙
· right ⊢ ∀ (n : ℕ), ∃ k C, ∀ (x : ℝ), ‖iteratedFDeriv ℝ n tanh x‖ ≤ C * (1 + ‖x‖) ^ k intro n right n:ℕ⊢ ∃ k C, ∀ (x : ℝ), ‖iteratedFDeriv ℝ n tanh x‖ ≤ C * (1 + ‖x‖) ^ k
use 0 h n:ℕ⊢ ∃ C, ∀ (x : ℝ), ‖iteratedFDeriv ℝ n tanh x‖ ≤ C * (1 + ‖x‖) ^ 0
obtain ⟨C, hC⟩ := iteratedDeriv_tanh_bounded n h n:ℕC:ℝhC:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ C⊢ ∃ C, ∀ (x : ℝ), ‖iteratedFDeriv ℝ n tanh x‖ ≤ C * (1 + ‖x‖) ^ 0
use C h n:ℕC:ℝhC:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ C⊢ ∀ (x : ℝ), ‖iteratedFDeriv ℝ n tanh x‖ ≤ C * (1 + ‖x‖) ^ 0
intro x h n:ℕC:ℝhC:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ Cx:ℝ⊢ ‖iteratedFDeriv ℝ n tanh x‖ ≤ C * (1 + ‖x‖) ^ 0
have h_equiv : ‖iteratedFDeriv ℝ n Real.tanh x‖ = |iteratedDeriv n Real.tanh x| := by ⊢ Function.HasTemperateGrowth tanh h n:ℕC:ℝhC:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ Cx:ℝh_equiv:‖iteratedFDeriv ℝ n tanh x‖ = |iteratedDeriv n tanh x|⊢ ‖iteratedFDeriv ℝ n tanh x‖ ≤ C * (1 + ‖x‖) ^ 0
rw [← iteratedFDerivWithin_univ n:ℕC:ℝhC:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ Cx:ℝ⊢ ‖iteratedFDerivWithin ℝ n tanh Set.univ x‖ = |iteratedDeriv n tanh x| n:ℕC:ℝhC:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ Cx:ℝ⊢ ‖iteratedFDerivWithin ℝ n tanh Set.univ x‖ = |iteratedDeriv n tanh x| h n:ℕC:ℝhC:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ Cx:ℝh_equiv:‖iteratedFDeriv ℝ n tanh x‖ = |iteratedDeriv n tanh x|⊢ ‖iteratedFDeriv ℝ n tanh x‖ ≤ C * (1 + ‖x‖) ^ 0] n:ℕC:ℝhC:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ Cx:ℝ⊢ ‖iteratedFDerivWithin ℝ n tanh Set.univ x‖ = |iteratedDeriv n tanh x|h n:ℕC:ℝhC:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ Cx:ℝh_equiv:‖iteratedFDeriv ℝ n tanh x‖ = |iteratedDeriv n tanh x|⊢ ‖iteratedFDeriv ℝ n tanh x‖ ≤ C * (1 + ‖x‖) ^ 0
rw [← iteratedDerivWithin_univ n:ℕC:ℝhC:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ Cx:ℝ⊢ ‖iteratedFDerivWithin ℝ n tanh Set.univ x‖ = |iteratedDerivWithin n tanh Set.univ x| n:ℕC:ℝhC:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ Cx:ℝ⊢ ‖iteratedFDerivWithin ℝ n tanh Set.univ x‖ = |iteratedDerivWithin n tanh Set.univ x|h n:ℕC:ℝhC:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ Cx:ℝh_equiv:‖iteratedFDeriv ℝ n tanh x‖ = |iteratedDeriv n tanh x|⊢ ‖iteratedFDeriv ℝ n tanh x‖ ≤ C * (1 + ‖x‖) ^ 0] n:ℕC:ℝhC:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ Cx:ℝ⊢ ‖iteratedFDerivWithin ℝ n tanh Set.univ x‖ = |iteratedDerivWithin n tanh Set.univ x|h n:ℕC:ℝhC:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ Cx:ℝh_equiv:‖iteratedFDeriv ℝ n tanh x‖ = |iteratedDeriv n tanh x|⊢ ‖iteratedFDeriv ℝ n tanh x‖ ≤ C * (1 + ‖x‖) ^ 0
rw [← norm_eq_abs n:ℕC:ℝhC:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ Cx:ℝ⊢ ‖iteratedFDerivWithin ℝ n tanh Set.univ x‖ = ‖iteratedDerivWithin n tanh Set.univ x‖ n:ℕC:ℝhC:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ Cx:ℝ⊢ ‖iteratedFDerivWithin ℝ n tanh Set.univ x‖ = ‖iteratedDerivWithin n tanh Set.univ x‖h n:ℕC:ℝhC:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ Cx:ℝh_equiv:‖iteratedFDeriv ℝ n tanh x‖ = |iteratedDeriv n tanh x|⊢ ‖iteratedFDeriv ℝ n tanh x‖ ≤ C * (1 + ‖x‖) ^ 0] n:ℕC:ℝhC:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ Cx:ℝ⊢ ‖iteratedFDerivWithin ℝ n tanh Set.univ x‖ = ‖iteratedDerivWithin n tanh Set.univ x‖h n:ℕC:ℝhC:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ Cx:ℝh_equiv:‖iteratedFDeriv ℝ n tanh x‖ = |iteratedDeriv n tanh x|⊢ ‖iteratedFDeriv ℝ n tanh x‖ ≤ C * (1 + ‖x‖) ^ 0
rw [norm_iteratedFDerivWithin_eq_norm_iteratedDerivWithin n:ℕC:ℝhC:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ Cx:ℝ⊢ ‖iteratedDerivWithin n tanh Set.univ x‖ = ‖iteratedDerivWithin n tanh Set.univ x‖h n:ℕC:ℝhC:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ Cx:ℝh_equiv:‖iteratedFDeriv ℝ n tanh x‖ = |iteratedDeriv n tanh x|⊢ ‖iteratedFDeriv ℝ n tanh x‖ ≤ C * (1 + ‖x‖) ^ 0]h n:ℕC:ℝhC:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ Cx:ℝh_equiv:‖iteratedFDeriv ℝ n tanh x‖ = |iteratedDeriv n tanh x|⊢ ‖iteratedFDeriv ℝ n tanh x‖ ≤ C * (1 + ‖x‖) ^ 0h n:ℕC:ℝhC:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ Cx:ℝh_equiv:‖iteratedFDeriv ℝ n tanh x‖ = |iteratedDeriv n tanh x|⊢ ‖iteratedFDeriv ℝ n tanh x‖ ≤ C * (1 + ‖x‖) ^ 0
rw [h_equiv h n:ℕC:ℝhC:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ Cx:ℝh_equiv:‖iteratedFDeriv ℝ n tanh x‖ = |iteratedDeriv n tanh x|⊢ |iteratedDeriv n tanh x| ≤ C * (1 + ‖x‖) ^ 0 h n:ℕC:ℝhC:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ Cx:ℝh_equiv:‖iteratedFDeriv ℝ n tanh x‖ = |iteratedDeriv n tanh x|⊢ |iteratedDeriv n tanh x| ≤ C * (1 + ‖x‖) ^ 0]h n:ℕC:ℝhC:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ Cx:ℝh_equiv:‖iteratedFDeriv ℝ n tanh x‖ = |iteratedDeriv n tanh x|⊢ |iteratedDeriv n tanh x| ≤ C * (1 + ‖x‖) ^ 0
simp only [pow_zero, mul_one] h n:ℕC:ℝhC:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ Cx:ℝh_equiv:‖iteratedFDeriv ℝ n tanh x‖ = |iteratedDeriv n tanh x|⊢ |iteratedDeriv n tanh x| ≤ C
exact hC x All goals completed! 🐙Iterated derivative for scaled tanh is differentiable
lemma iteratedDeriv_tanh_differentiable (n : ℕ) : Differentiable ℝ (iteratedDeriv n tanh) := by n:ℕ⊢ Differentiable ℝ (iteratedDeriv n tanh)
have h : ContDiff ℝ (n + 1) tanh := by
apply contDiff_tanh n:ℕh:ContDiff ℝ (↑n + 1) tanh⊢ Differentiable ℝ (iteratedDeriv n tanh) n:ℕh:ContDiff ℝ (↑n + 1) tanh⊢ Differentiable ℝ (iteratedDeriv n tanh)
apply h.differentiable_iteratedDeriv n:ℕh:ContDiff ℝ (↑n + 1) tanh⊢ ↑n < ↑n + 1
have h' : n < n + 1 := by n:ℕ⊢ Differentiable ℝ (iteratedDeriv n tanh) n:ℕh:ContDiff ℝ (↑n + 1) tanhh':n < n + 1⊢ ↑n < ↑n + 1
apply Nat.lt_add_one n:ℕh:ContDiff ℝ (↑n + 1) tanhh':n < n + 1⊢ ↑n < ↑n + 1 n:ℕh:ContDiff ℝ (↑n + 1) tanhh':n < n + 1⊢ ↑n < ↑n + 1
norm_cast All goals completed! 🐙Norm of Iterated derivative for scaled tanh is equal to the norm of its Fderiv
lemma tanh_const_mul_iteratedDeriv_norm_eq_iteratedFDeriv_norm (n : ℕ) (x : ℝ) :
‖iteratedFDeriv ℝ n (fun x => tanh (κ * x)) x‖
= |iteratedDeriv n (fun x => tanh (κ * x)) x| := by κ:ℝn:ℕx:ℝ⊢ ‖iteratedFDeriv ℝ n (fun x => tanh (κ * x)) x‖ = |iteratedDeriv n (fun x => tanh (κ * x)) x|
rw [← iteratedFDerivWithin_univ, κ:ℝn:ℕx:ℝ⊢ ‖iteratedFDerivWithin ℝ n (fun x => tanh (κ * x)) Set.univ x‖ = |iteratedDeriv n (fun x => tanh (κ * x)) x| All goals completed! 🐙 ← iteratedDerivWithin_univ, κ:ℝn:ℕx:ℝ⊢ ‖iteratedFDerivWithin ℝ n (fun x => tanh (κ * x)) Set.univ x‖ =
|iteratedDerivWithin n (fun x => tanh (κ * x)) Set.univ x| All goals completed! 🐙 ← norm_eq_abs, κ:ℝn:ℕx:ℝ⊢ ‖iteratedFDerivWithin ℝ n (fun x => tanh (κ * x)) Set.univ x‖ =
‖iteratedDerivWithin n (fun x => tanh (κ * x)) Set.univ x‖ All goals completed! 🐙
norm_iteratedFDerivWithin_eq_norm_iteratedDerivWithin κ:ℝn:ℕx:ℝ⊢ ‖iteratedDerivWithin n (fun x => tanh (κ * x)) Set.univ x‖ = ‖iteratedDerivWithin n (fun x => tanh (κ * x)) Set.univ x‖ All goals completed! 🐙] All goals completed! 🐙Iterated derivative for scaled tanh
lemma iteratedDeriv_tanh_const_mul (n : ℕ) (κ : ℝ) : ∀ x : ℝ,
iteratedDeriv n (fun y => Real.tanh (κ * y)) x = κ^n * (iteratedDeriv n Real.tanh) (κ * x) := by n:ℕκ:ℝ⊢ ∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)
induction n with
| zero => zero κ:ℝ⊢ ∀ (x : ℝ), iteratedDeriv 0 (fun y => tanh (κ * y)) x = κ ^ 0 * iteratedDeriv 0 tanh (κ * x)
rw [iteratedDeriv_zero zero κ:ℝ⊢ ∀ (x : ℝ), tanh (κ * x) = κ ^ 0 * iteratedDeriv 0 tanh (κ * x) zero κ:ℝ⊢ ∀ (x : ℝ), tanh (κ * x) = κ ^ 0 * iteratedDeriv 0 tanh (κ * x)] zero κ:ℝ⊢ ∀ (x : ℝ), tanh (κ * x) = κ ^ 0 * iteratedDeriv 0 tanh (κ * x)
field_simp zero κ:ℝ⊢ ∀ (x : ℝ), tanh (κ * x) = iteratedDeriv 0 tanh (κ * x)
simp All goals completed! 🐙
| succ n ih => succ κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)⊢ ∀ (x : ℝ), iteratedDeriv (n + 1) (fun y => tanh (κ * y)) x = κ ^ (n + 1) * iteratedDeriv (n + 1) tanh (κ * x)
rw [iteratedDeriv_succ succ κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)⊢ ∀ (x : ℝ), deriv (iteratedDeriv n fun y => tanh (κ * y)) x = κ ^ (n + 1) * iteratedDeriv (n + 1) tanh (κ * x) succ κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)⊢ ∀ (x : ℝ), deriv (iteratedDeriv n fun y => tanh (κ * y)) x = κ ^ (n + 1) * iteratedDeriv (n + 1) tanh (κ * x)]succ κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)⊢ ∀ (x : ℝ), deriv (iteratedDeriv n fun y => tanh (κ * y)) x = κ ^ (n + 1) * iteratedDeriv (n + 1) tanh (κ * x)
have h' : iteratedDeriv n (fun y => tanh (κ * y)) =
fun x => κ ^ n * iteratedDeriv n tanh (κ * x) := by n:ℕκ:ℝ⊢ ∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x) succ κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)⊢ ∀ (x : ℝ), deriv (iteratedDeriv n fun y => tanh (κ * y)) x = κ ^ (n + 1) * iteratedDeriv (n + 1) tanh (κ * x)
funext x κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)x:ℝ⊢ iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)succ κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)⊢ ∀ (x : ℝ), deriv (iteratedDeriv n fun y => tanh (κ * y)) x = κ ^ (n + 1) * iteratedDeriv (n + 1) tanh (κ * x)
rw [ih κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)x:ℝ⊢ κ ^ n * iteratedDeriv n tanh (κ * x) = κ ^ n * iteratedDeriv n tanh (κ * x)succ κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)⊢ ∀ (x : ℝ), deriv (iteratedDeriv n fun y => tanh (κ * y)) x = κ ^ (n + 1) * iteratedDeriv (n + 1) tanh (κ * x)]succ κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)⊢ ∀ (x : ℝ), deriv (iteratedDeriv n fun y => tanh (κ * y)) x = κ ^ (n + 1) * iteratedDeriv (n + 1) tanh (κ * x)succ κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)⊢ ∀ (x : ℝ), deriv (iteratedDeriv n fun y => tanh (κ * y)) x = κ ^ (n + 1) * iteratedDeriv (n + 1) tanh (κ * x)
rw [h' succ κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)⊢ ∀ (x : ℝ), deriv (fun x => κ ^ n * iteratedDeriv n tanh (κ * x)) x = κ ^ (n + 1) * iteratedDeriv (n + 1) tanh (κ * x) succ κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)⊢ ∀ (x : ℝ), deriv (fun x => κ ^ n * iteratedDeriv n tanh (κ * x)) x = κ ^ (n + 1) * iteratedDeriv (n + 1) tanh (κ * x)]succ κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)⊢ ∀ (x : ℝ), deriv (fun x => κ ^ n * iteratedDeriv n tanh (κ * x)) x = κ ^ (n + 1) * iteratedDeriv (n + 1) tanh (κ * x)
simp only [deriv_const_mul_field'] succ κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)⊢ ∀ (x : ℝ), κ ^ n * deriv (fun x => iteratedDeriv n tanh (κ * x)) x = κ ^ (n + 1) * iteratedDeriv (n + 1) tanh (κ * x)
have h'': (fun x => iteratedDeriv n tanh (κ * x)) =
(iteratedDeriv n tanh) ∘ (fun x => κ * x) := by n:ℕκ:ℝ⊢ ∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x) succ κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * x⊢ ∀ (x : ℝ), κ ^ n * deriv (fun x => iteratedDeriv n tanh (κ * x)) x = κ ^ (n + 1) * iteratedDeriv (n + 1) tanh (κ * x)
funext x κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)x:ℝ⊢ iteratedDeriv n tanh (κ * x) = (iteratedDeriv n tanh ∘ fun x => κ * x) xsucc κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * x⊢ ∀ (x : ℝ), κ ^ n * deriv (fun x => iteratedDeriv n tanh (κ * x)) x = κ ^ (n + 1) * iteratedDeriv (n + 1) tanh (κ * x)
simpsucc κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * x⊢ ∀ (x : ℝ), κ ^ n * deriv (fun x => iteratedDeriv n tanh (κ * x)) x = κ ^ (n + 1) * iteratedDeriv (n + 1) tanh (κ * x)succ κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * x⊢ ∀ (x : ℝ), κ ^ n * deriv (fun x => iteratedDeriv n tanh (κ * x)) x = κ ^ (n + 1) * iteratedDeriv (n + 1) tanh (κ * x)
rw [h'' succ κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * x⊢ ∀ (x : ℝ), κ ^ n * deriv (iteratedDeriv n tanh ∘ fun x => κ * x) x = κ ^ (n + 1) * iteratedDeriv (n + 1) tanh (κ * x) succ κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * x⊢ ∀ (x : ℝ), κ ^ n * deriv (iteratedDeriv n tanh ∘ fun x => κ * x) x = κ ^ (n + 1) * iteratedDeriv (n + 1) tanh (κ * x)]succ κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * x⊢ ∀ (x : ℝ), κ ^ n * deriv (iteratedDeriv n tanh ∘ fun x => κ * x) x = κ ^ (n + 1) * iteratedDeriv (n + 1) tanh (κ * x)
intro x succ κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝ⊢ κ ^ n * deriv (iteratedDeriv n tanh ∘ fun x => κ * x) x = κ ^ (n + 1) * iteratedDeriv (n + 1) tanh (κ * x)
rw [deriv_comp, succ κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝ⊢ κ ^ n * (deriv (iteratedDeriv n tanh) (κ * x) * deriv (fun x => κ * x) x) =
κ ^ (n + 1) * iteratedDeriv (n + 1) tanh (κ * x)succ.hh₂ κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝ⊢ DifferentiableAt ℝ (iteratedDeriv n tanh) (κ * x)succ.hh κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝ⊢ DifferentiableAt ℝ (fun x => κ * x) x succ κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝ⊢ κ ^ n * (iteratedDeriv (n + 1) tanh (κ * x) * deriv (fun x => κ * x) x) =
κ ^ (n + 1) * iteratedDeriv (n + 1) tanh (κ * x)succ.hh₂ κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝ⊢ DifferentiableAt ℝ (iteratedDeriv n tanh) (κ * x)succ.hh κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝ⊢ DifferentiableAt ℝ (fun x => κ * x) x ← iteratedDeriv_succ succ κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝ⊢ κ ^ n * (iteratedDeriv (n + 1) tanh (κ * x) * deriv (fun x => κ * x) x) =
κ ^ (n + 1) * iteratedDeriv (n + 1) tanh (κ * x)succ.hh₂ κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝ⊢ DifferentiableAt ℝ (iteratedDeriv n tanh) (κ * x)succ.hh κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝ⊢ DifferentiableAt ℝ (fun x => κ * x) xsucc κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝ⊢ κ ^ n * (iteratedDeriv (n + 1) tanh (κ * x) * deriv (fun x => κ * x) x) =
κ ^ (n + 1) * iteratedDeriv (n + 1) tanh (κ * x)succ.hh₂ κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝ⊢ DifferentiableAt ℝ (iteratedDeriv n tanh) (κ * x)succ.hh κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝ⊢ DifferentiableAt ℝ (fun x => κ * x) x]succ κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝ⊢ κ ^ n * (iteratedDeriv (n + 1) tanh (κ * x) * deriv (fun x => κ * x) x) =
κ ^ (n + 1) * iteratedDeriv (n + 1) tanh (κ * x)succ.hh₂ κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝ⊢ DifferentiableAt ℝ (iteratedDeriv n tanh) (κ * x)succ.hh κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝ⊢ DifferentiableAt ℝ (fun x => κ * x) x
have h''': deriv (fun x => κ * x) = fun x => κ := by n:ℕκ:ℝ⊢ ∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x) succ κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝh''':(deriv fun x => κ * x) = fun x => κ⊢ κ ^ n * (iteratedDeriv (n + 1) tanh (κ * x) * deriv (fun x => κ * x) x) =
κ ^ (n + 1) * iteratedDeriv (n + 1) tanh (κ * x)succ.hh₂ κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝ⊢ DifferentiableAt ℝ (iteratedDeriv n tanh) (κ * x)succ.hh κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝ⊢ DifferentiableAt ℝ (fun x => κ * x) x
funext x κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx✝:ℝx:ℝ⊢ deriv (fun x => κ * x) x = κsucc κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝh''':(deriv fun x => κ * x) = fun x => κ⊢ κ ^ n * (iteratedDeriv (n + 1) tanh (κ * x) * deriv (fun x => κ * x) x) =
κ ^ (n + 1) * iteratedDeriv (n + 1) tanh (κ * x)succ.hh₂ κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝ⊢ DifferentiableAt ℝ (iteratedDeriv n tanh) (κ * x)succ.hh κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝ⊢ DifferentiableAt ℝ (fun x => κ * x) x
rw [deriv_const_mul, κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx✝:ℝx:ℝ⊢ κ * deriv (fun x => x) x = κhd κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx✝:ℝx:ℝ⊢ DifferentiableAt ℝ (fun x => x) x κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx✝:ℝx:ℝ⊢ κ * deriv id x = κhd κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx✝:ℝx:ℝ⊢ DifferentiableAt ℝ (fun x => x) xsucc κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝh''':(deriv fun x => κ * x) = fun x => κ⊢ κ ^ n * (iteratedDeriv (n + 1) tanh (κ * x) * deriv (fun x => κ * x) x) =
κ ^ (n + 1) * iteratedDeriv (n + 1) tanh (κ * x)succ.hh₂ κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝ⊢ DifferentiableAt ℝ (iteratedDeriv n tanh) (κ * x)succ.hh κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝ⊢ DifferentiableAt ℝ (fun x => κ * x) x ← Function.id_def κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx✝:ℝx:ℝ⊢ κ * deriv id x = κhd κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx✝:ℝx:ℝ⊢ DifferentiableAt ℝ (fun x => x) x κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx✝:ℝx:ℝ⊢ κ * deriv id x = κhd κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx✝:ℝx:ℝ⊢ DifferentiableAt ℝ (fun x => x) xsucc κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝh''':(deriv fun x => κ * x) = fun x => κ⊢ κ ^ n * (iteratedDeriv (n + 1) tanh (κ * x) * deriv (fun x => κ * x) x) =
κ ^ (n + 1) * iteratedDeriv (n + 1) tanh (κ * x)succ.hh₂ κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝ⊢ DifferentiableAt ℝ (iteratedDeriv n tanh) (κ * x)succ.hh κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝ⊢ DifferentiableAt ℝ (fun x => κ * x) x] κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx✝:ℝx:ℝ⊢ κ * deriv id x = κhd κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx✝:ℝx:ℝ⊢ DifferentiableAt ℝ (fun x => x) xsucc κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝh''':(deriv fun x => κ * x) = fun x => κ⊢ κ ^ n * (iteratedDeriv (n + 1) tanh (κ * x) * deriv (fun x => κ * x) x) =
κ ^ (n + 1) * iteratedDeriv (n + 1) tanh (κ * x)succ.hh₂ κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝ⊢ DifferentiableAt ℝ (iteratedDeriv n tanh) (κ * x)succ.hh κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝ⊢ DifferentiableAt ℝ (fun x => κ * x) x
field_simp κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx✝:ℝx:ℝ⊢ κ * deriv id x = κhd κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx✝:ℝx:ℝ⊢ DifferentiableAt ℝ (fun x => x) xsucc κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝh''':(deriv fun x => κ * x) = fun x => κ⊢ κ ^ n * (iteratedDeriv (n + 1) tanh (κ * x) * deriv (fun x => κ * x) x) =
κ ^ (n + 1) * iteratedDeriv (n + 1) tanh (κ * x)succ.hh₂ κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝ⊢ DifferentiableAt ℝ (iteratedDeriv n tanh) (κ * x)succ.hh κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝ⊢ DifferentiableAt ℝ (fun x => κ * x) x
simp only [deriv_id', mul_one] hd κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx✝:ℝx:ℝ⊢ DifferentiableAt ℝ (fun x => x) xsucc κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝh''':(deriv fun x => κ * x) = fun x => κ⊢ κ ^ n * (iteratedDeriv (n + 1) tanh (κ * x) * deriv (fun x => κ * x) x) =
κ ^ (n + 1) * iteratedDeriv (n + 1) tanh (κ * x)succ.hh₂ κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝ⊢ DifferentiableAt ℝ (iteratedDeriv n tanh) (κ * x)succ.hh κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝ⊢ DifferentiableAt ℝ (fun x => κ * x) x
apply differentiable_idsucc κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝh''':(deriv fun x => κ * x) = fun x => κ⊢ κ ^ n * (iteratedDeriv (n + 1) tanh (κ * x) * deriv (fun x => κ * x) x) =
κ ^ (n + 1) * iteratedDeriv (n + 1) tanh (κ * x)succ.hh₂ κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝ⊢ DifferentiableAt ℝ (iteratedDeriv n tanh) (κ * x)succ.hh κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝ⊢ DifferentiableAt ℝ (fun x => κ * x) xsucc κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝh''':(deriv fun x => κ * x) = fun x => κ⊢ κ ^ n * (iteratedDeriv (n + 1) tanh (κ * x) * deriv (fun x => κ * x) x) =
κ ^ (n + 1) * iteratedDeriv (n + 1) tanh (κ * x)succ.hh₂ κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝ⊢ DifferentiableAt ℝ (iteratedDeriv n tanh) (κ * x)succ.hh κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝ⊢ DifferentiableAt ℝ (fun x => κ * x) x
rw [h''' succ κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝh''':(deriv fun x => κ * x) = fun x => κ⊢ κ ^ n * (iteratedDeriv (n + 1) tanh (κ * x) * (fun x => κ) x) = κ ^ (n + 1) * iteratedDeriv (n + 1) tanh (κ * x)succ.hh₂ κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝ⊢ DifferentiableAt ℝ (iteratedDeriv n tanh) (κ * x)succ.hh κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝ⊢ DifferentiableAt ℝ (fun x => κ * x) x succ κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝh''':(deriv fun x => κ * x) = fun x => κ⊢ κ ^ n * (iteratedDeriv (n + 1) tanh (κ * x) * (fun x => κ) x) = κ ^ (n + 1) * iteratedDeriv (n + 1) tanh (κ * x)succ.hh₂ κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝ⊢ DifferentiableAt ℝ (iteratedDeriv n tanh) (κ * x)succ.hh κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝ⊢ DifferentiableAt ℝ (fun x => κ * x) x]succ κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝh''':(deriv fun x => κ * x) = fun x => κ⊢ κ ^ n * (iteratedDeriv (n + 1) tanh (κ * x) * (fun x => κ) x) = κ ^ (n + 1) * iteratedDeriv (n + 1) tanh (κ * x)succ.hh₂ κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝ⊢ DifferentiableAt ℝ (iteratedDeriv n tanh) (κ * x)succ.hh κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝ⊢ DifferentiableAt ℝ (fun x => κ * x) x
field_simp succ κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝh''':(deriv fun x => κ * x) = fun x => κ⊢ κ ^ n * κ * iteratedDeriv (n + 1) tanh (κ * x) = iteratedDeriv (n + 1) tanh (κ * x) * κ ^ (n + 1)succ.hh₂ κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝ⊢ DifferentiableAt ℝ (iteratedDeriv n tanh) (κ * x)succ.hh κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝ⊢ DifferentiableAt ℝ (fun x => κ * x) x
ring succ.hh₂ κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝ⊢ DifferentiableAt ℝ (iteratedDeriv n tanh) (κ * x)succ.hh κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝ⊢ DifferentiableAt ℝ (fun x => κ * x) x
apply iteratedDeriv_tanh_differentiable succ.hh κ:ℝn:ℕih:∀ (x : ℝ), iteratedDeriv n (fun y => tanh (κ * y)) x = κ ^ n * iteratedDeriv n tanh (κ * x)h':(iteratedDeriv n fun y => tanh (κ * y)) = fun x => κ ^ n * iteratedDeriv n tanh (κ * x)h'':(fun x => iteratedDeriv n tanh (κ * x)) = iteratedDeriv n tanh ∘ fun x => κ * xx:ℝ⊢ DifferentiableAt ℝ (fun x => κ * x) x
fun_prop All goals completed! 🐙tanh(κx) has temperate growth
lemma tanh_const_mul_hasTemperateGrowth (κ : ℝ) :
Function.HasTemperateGrowth (fun x => Real.tanh (κ * x)) := by κ:ℝ⊢ Function.HasTemperateGrowth fun x => tanh (κ * x)
constructor left κ:ℝ⊢ ContDiff ℝ ∞ fun x => tanh (κ * x)right κ:ℝ⊢ ∀ (n : ℕ), ∃ k C, ∀ (x : ℝ), ‖iteratedFDeriv ℝ n (fun x => tanh (κ * x)) x‖ ≤ C * (1 + ‖x‖) ^ k
· left κ:ℝ⊢ ContDiff ℝ ∞ fun x => tanh (κ * x) have h : (fun x => Real.tanh (κ * x)) = (Real.tanh ∘ (fun x => κ * x)) :=
rfl left κ:ℝh:(fun x => tanh (κ * x)) = tanh ∘ fun x => κ * x⊢ ContDiff ℝ ∞ fun x => tanh (κ * x)
have h' : ContDiff ℝ ∞ (fun x => κ * x) := by κ:ℝ⊢ Function.HasTemperateGrowth fun x => tanh (κ * x) left κ:ℝh:(fun x => tanh (κ * x)) = tanh ∘ fun x => κ * xh':ContDiff ℝ ∞ fun x => κ * x⊢ ContDiff ℝ ∞ fun x => tanh (κ * x)
have h'': (fun x : ℝ => κ * x) = fun x => κ • x := rfl κ:ℝh:(fun x => tanh (κ * x)) = tanh ∘ fun x => κ * xh'':(fun x => κ * x) = fun x => κ • x⊢ ContDiff ℝ ∞ fun x => κ * x left κ:ℝh:(fun x => tanh (κ * x)) = tanh ∘ fun x => κ * xh':ContDiff ℝ ∞ fun x => κ * x⊢ ContDiff ℝ ∞ fun x => tanh (κ * x)
rw [contDiff_infty, κ:ℝh:(fun x => tanh (κ * x)) = tanh ∘ fun x => κ * xh'':(fun x => κ * x) = fun x => κ • x⊢ ∀ (n : ℕ), ContDiff ℝ ↑n fun x => κ * x κ:ℝh:(fun x => tanh (κ * x)) = tanh ∘ fun x => κ * xh'':(fun x => κ * x) = fun x => κ • x⊢ ∀ (n : ℕ), ContDiff ℝ ↑n fun x => κ • xleft κ:ℝh:(fun x => tanh (κ * x)) = tanh ∘ fun x => κ * xh':ContDiff ℝ ∞ fun x => κ * x⊢ ContDiff ℝ ∞ fun x => tanh (κ * x) h'' κ:ℝh:(fun x => tanh (κ * x)) = tanh ∘ fun x => κ * xh'':(fun x => κ * x) = fun x => κ • x⊢ ∀ (n : ℕ), ContDiff ℝ ↑n fun x => κ • x κ:ℝh:(fun x => tanh (κ * x)) = tanh ∘ fun x => κ * xh'':(fun x => κ * x) = fun x => κ • x⊢ ∀ (n : ℕ), ContDiff ℝ ↑n fun x => κ • xleft κ:ℝh:(fun x => tanh (κ * x)) = tanh ∘ fun x => κ * xh':ContDiff ℝ ∞ fun x => κ * x⊢ ContDiff ℝ ∞ fun x => tanh (κ * x)] κ:ℝh:(fun x => tanh (κ * x)) = tanh ∘ fun x => κ * xh'':(fun x => κ * x) = fun x => κ • x⊢ ∀ (n : ℕ), ContDiff ℝ ↑n fun x => κ • xleft κ:ℝh:(fun x => tanh (κ * x)) = tanh ∘ fun x => κ * xh':ContDiff ℝ ∞ fun x => κ * x⊢ ContDiff ℝ ∞ fun x => tanh (κ * x)
intro n κ:ℝh:(fun x => tanh (κ * x)) = tanh ∘ fun x => κ * xh'':(fun x => κ * x) = fun x => κ • xn:ℕ⊢ ContDiff ℝ ↑n fun x => κ • xleft κ:ℝh:(fun x => tanh (κ * x)) = tanh ∘ fun x => κ * xh':ContDiff ℝ ∞ fun x => κ * x⊢ ContDiff ℝ ∞ fun x => tanh (κ * x)
apply contDiff_const_smulleft κ:ℝh:(fun x => tanh (κ * x)) = tanh ∘ fun x => κ * xh':ContDiff ℝ ∞ fun x => κ * x⊢ ContDiff ℝ ∞ fun x => tanh (κ * x)left κ:ℝh:(fun x => tanh (κ * x)) = tanh ∘ fun x => κ * xh':ContDiff ℝ ∞ fun x => κ * x⊢ ContDiff ℝ ∞ fun x => tanh (κ * x)
rw [h left κ:ℝh:(fun x => tanh (κ * x)) = tanh ∘ fun x => κ * xh':ContDiff ℝ ∞ fun x => κ * x⊢ ContDiff ℝ ∞ (tanh ∘ fun x => κ * x) left κ:ℝh:(fun x => tanh (κ * x)) = tanh ∘ fun x => κ * xh':ContDiff ℝ ∞ fun x => κ * x⊢ ContDiff ℝ ∞ (tanh ∘ fun x => κ * x)]left κ:ℝh:(fun x => tanh (κ * x)) = tanh ∘ fun x => κ * xh':ContDiff ℝ ∞ fun x => κ * x⊢ ContDiff ℝ ∞ (tanh ∘ fun x => κ * x)
apply ContDiff.comp contDiff_top_tanh h' All goals completed! 🐙
· right κ:ℝ⊢ ∀ (n : ℕ), ∃ k C, ∀ (x : ℝ), ‖iteratedFDeriv ℝ n (fun x => tanh (κ * x)) x‖ ≤ C * (1 + ‖x‖) ^ k intro n right κ:ℝn:ℕ⊢ ∃ k C, ∀ (x : ℝ), ‖iteratedFDeriv ℝ n (fun x => tanh (κ * x)) x‖ ≤ C * (1 + ‖x‖) ^ k
obtain ⟨D, hD⟩ := iteratedDeriv_tanh_bounded n right κ:ℝn:ℕD:ℝhD:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ D⊢ ∃ k C, ∀ (x : ℝ), ‖iteratedFDeriv ℝ n (fun x => tanh (κ * x)) x‖ ≤ C * (1 + ‖x‖) ^ k
use 0 h κ:ℝn:ℕD:ℝhD:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ D⊢ ∃ C, ∀ (x : ℝ), ‖iteratedFDeriv ℝ n (fun x => tanh (κ * x)) x‖ ≤ C * (1 + ‖x‖) ^ 0
use D * (|κ| ^ n) h κ:ℝn:ℕD:ℝhD:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ D⊢ ∀ (x : ℝ), ‖iteratedFDeriv ℝ n (fun x => tanh (κ * x)) x‖ ≤ D * |κ| ^ n * (1 + ‖x‖) ^ 0
intro x h κ:ℝn:ℕD:ℝhD:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ Dx:ℝ⊢ ‖iteratedFDeriv ℝ n (fun x => tanh (κ * x)) x‖ ≤ D * |κ| ^ n * (1 + ‖x‖) ^ 0
rw [tanh_const_mul_iteratedDeriv_norm_eq_iteratedFDeriv_norm, h κ:ℝn:ℕD:ℝhD:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ Dx:ℝ⊢ |iteratedDeriv n (fun x => tanh (κ * x)) x| ≤ D * |κ| ^ n * (1 + ‖x‖) ^ 0 h κ:ℝn:ℕD:ℝhD:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ Dx:ℝ⊢ |κ ^ n * iteratedDeriv n tanh (κ * x)| ≤ D * |κ| ^ n * (1 + ‖x‖) ^ 0 iteratedDeriv_tanh_const_mul h κ:ℝn:ℕD:ℝhD:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ Dx:ℝ⊢ |κ ^ n * iteratedDeriv n tanh (κ * x)| ≤ D * |κ| ^ n * (1 + ‖x‖) ^ 0h κ:ℝn:ℕD:ℝhD:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ Dx:ℝ⊢ |κ ^ n * iteratedDeriv n tanh (κ * x)| ≤ D * |κ| ^ n * (1 + ‖x‖) ^ 0]h κ:ℝn:ℕD:ℝhD:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ Dx:ℝ⊢ |κ ^ n * iteratedDeriv n tanh (κ * x)| ≤ D * |κ| ^ n * (1 + ‖x‖) ^ 0
field_simp h κ:ℝn:ℕD:ℝhD:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ Dx:ℝ⊢ |κ ^ n * iteratedDeriv n tanh (κ * x)| ≤ D * |κ| ^ n
rw [abs_mul, h κ:ℝn:ℕD:ℝhD:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ Dx:ℝ⊢ |κ ^ n| * |iteratedDeriv n tanh (κ * x)| ≤ D * |κ| ^ n h κ:ℝn:ℕD:ℝhD:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ Dx:ℝ⊢ |κ| ^ n * |iteratedDeriv n tanh (κ * x)| ≤ |κ| ^ n * D abs_pow, h κ:ℝn:ℕD:ℝhD:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ Dx:ℝ⊢ |κ| ^ n * |iteratedDeriv n tanh (κ * x)| ≤ D * |κ| ^ nh κ:ℝn:ℕD:ℝhD:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ Dx:ℝ⊢ |κ| ^ n * |iteratedDeriv n tanh (κ * x)| ≤ |κ| ^ n * D mul_comm, h κ:ℝn:ℕD:ℝhD:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ Dx:ℝ⊢ |iteratedDeriv n tanh (κ * x)| * |κ| ^ n ≤ D * |κ| ^ nh κ:ℝn:ℕD:ℝhD:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ Dx:ℝ⊢ |κ| ^ n * |iteratedDeriv n tanh (κ * x)| ≤ |κ| ^ n * D mul_comm, h κ:ℝn:ℕD:ℝhD:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ Dx:ℝ⊢ |κ| ^ n * |iteratedDeriv n tanh (κ * x)| ≤ D * |κ| ^ nh κ:ℝn:ℕD:ℝhD:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ Dx:ℝ⊢ |κ| ^ n * |iteratedDeriv n tanh (κ * x)| ≤ |κ| ^ n * D mul_comm D (|κ| ^ n) h κ:ℝn:ℕD:ℝhD:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ Dx:ℝ⊢ |κ| ^ n * |iteratedDeriv n tanh (κ * x)| ≤ |κ| ^ n * Dh κ:ℝn:ℕD:ℝhD:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ Dx:ℝ⊢ |κ| ^ n * |iteratedDeriv n tanh (κ * x)| ≤ |κ| ^ n * D]h κ:ℝn:ℕD:ℝhD:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ Dx:ℝ⊢ |κ| ^ n * |iteratedDeriv n tanh (κ * x)| ≤ |κ| ^ n * D
apply mul_le_mul_of_nonneg_left h.hbc κ:ℝn:ℕD:ℝhD:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ Dx:ℝ⊢ |iteratedDeriv n tanh (κ * x)| ≤ Dha κ:ℝn:ℕD:ℝhD:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ Dx:ℝ⊢ 0 ≤ |κ| ^ n
apply hD ha κ:ℝn:ℕD:ℝhD:∀ (x : ℝ), |iteratedDeriv n tanh x| ≤ Dx:ℝ⊢ 0 ≤ |κ| ^ n
simp only [abs_nonneg, pow_nonneg] All goals completed! 🐙