Imports
/-
Copyright (c) 2025 Zhi Kai Pong. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Zhi Kai Pong
-/
module
public import Physlib.SpaceAndTime.Space.CrossProduct
public import Physlib.SpaceAndTime.Space.Derivatives.LaplacianWave equation
i. Overview
In this module we define the wave equation in d-dimensional Euclidean space,
and prove that plane waves are solutions to the wave equation.
By a plne wave we mean a function of the form f(t, x) = f₀(⟪x, s⟫_ℝ - c * t) where
s is a direction vector and c is the propagation speed.
ii. Key results
WaveEquation: The general form of the wave equation where c is the propagation speed.
planeWave: A vector-valued plane wave travelling in the direction of s with
propagation speed c.
planeWave_waveEquation: The plane wave satisfies the wave equation.
iii. Table of contents
A. The wave equation
B. Plane wave solutions
B.1. Definition of a plane wave
B.2. Differentiablity conditions
B.3. Time derivatives of plane waves
B.4. Space derivatives of plane waves
B.5. Laplacian of plane waves
B.6. Plane waves satisfy the wave equation
C. Old lemmas used throughout files
iv. References
@[expose] public sectionA. The wave equation
The general form of the wave equation where c is the propagation speed.
def WaveEquation {d} (f : Time → Space d → EuclideanSpace ℝ (Fin d))
(t : Time) (x : Space d) (c : ℝ) : Prop :=
c^2 • Δᵥ (f t) x - ∂ₜ (fun t => (∂ₜ (fun t => f t x) t)) t = 0B. Plane wave solutions
B.1. Definition of a plane wave
lemma planeWave_eq {d f₀ c x} {s : Direction d} :
planeWave f₀ c s t x = f₀ (⟪x, s.unit⟫_ℝ - c * t) :=
rflB.2. Differentiablity conditions
@[fun_prop]
lemma planeWave_differentiable_time {d f₀ c x} {s : Direction d}
(h' : Differentiable ℝ f₀) :
Differentiable ℝ (fun t => planeWave f₀ c s t x) := d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx:Space ds:Direction dh':Differentiable ℝ f₀⊢ Differentiable ℝ fun t => planeWave f₀ c s t x
d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx:Space ds:Direction dh':Differentiable ℝ f₀⊢ Differentiable ℝ fun t => f₀ (⟪x, s.unit⟫_ℝ - c * t.val)
d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx:Space ds:Direction dh':Differentiable ℝ f₀⊢ Differentiable ℝ f₀d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx:Space ds:Direction dh':Differentiable ℝ f₀⊢ Differentiable ℝ fun t => ⟪x, s.unit⟫_ℝ - c * t.val d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx:Space ds:Direction dh':Differentiable ℝ f₀⊢ Differentiable ℝ f₀d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx:Space ds:Direction dh':Differentiable ℝ f₀⊢ Differentiable ℝ fun t => ⟪x, s.unit⟫_ℝ - c * t.val All goals completed! 🐙@[fun_prop]
lemma planeWave_differentiable_space {d f₀ c t} {s : Direction d}
(h' : Differentiable ℝ f₀) :
Differentiable ℝ (fun x => planeWave f₀ c s t x) := d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝt:Times:Direction dh':Differentiable ℝ f₀⊢ Differentiable ℝ fun x => planeWave f₀ c s t x
d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝt:Times:Direction dh':Differentiable ℝ f₀⊢ Differentiable ℝ fun x => f₀ (⟪x, s.unit⟫_ℝ - c * t.val)
d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝt:Times:Direction dh':Differentiable ℝ f₀⊢ Differentiable ℝ f₀d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝt:Times:Direction dh':Differentiable ℝ f₀⊢ Differentiable ℝ fun x => ⟪x, s.unit⟫_ℝ - c * t.val
d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝt:Times:Direction dh':Differentiable ℝ f₀⊢ Differentiable ℝ f₀ All goals completed! 🐙
d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝt:Times:Direction dh':Differentiable ℝ f₀⊢ Differentiable ℝ fun x => ⟪x, s.unit⟫_ℝ - c * t.val d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝt:Times:Direction dh':Differentiable ℝ f₀⊢ Differentiable ℝ fun x => ⟪x, s.unit⟫_ℝd:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝt:Times:Direction dh':Differentiable ℝ f₀⊢ Differentiable ℝ fun x => c * t.val
d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝt:Times:Direction dh':Differentiable ℝ f₀⊢ Differentiable ℝ fun x => ⟪x, s.unit⟫_ℝ d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝt:Times:Direction dh':Differentiable ℝ f₀⊢ Differentiable ℝ fun x => xd:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝt:Times:Direction dh':Differentiable ℝ f₀⊢ Differentiable ℝ fun x => s.unit
d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝt:Times:Direction dh':Differentiable ℝ f₀⊢ Differentiable ℝ fun x => x All goals completed! 🐙
d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝt:Times:Direction dh':Differentiable ℝ f₀⊢ Differentiable ℝ fun x => s.unit All goals completed! 🐙
d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝt:Times:Direction dh':Differentiable ℝ f₀⊢ Differentiable ℝ fun x => c * t.val All goals completed! 🐙@[fun_prop]
lemma planeWave_differentiable {s : Direction d}
{f₀ : ℝ → EuclideanSpace ℝ (Fin d)}
(h' : Differentiable ℝ f₀) : Differentiable ℝ ↿(planeWave f₀ c s) := d:ℕc:ℝs:Direction df₀:ℝ → EuclideanSpace ℝ (Fin d)h':Differentiable ℝ f₀⊢ Differentiable ℝ ↿(planeWave f₀ c s)
d:ℕc:ℝs:Direction df₀:ℝ → EuclideanSpace ℝ (Fin d)h':Differentiable ℝ f₀⊢ Differentiable ℝ ↿fun t x => f₀ (⟪x, s.unit⟫_ℝ - c * t.val)
d:ℕc:ℝs:Direction df₀:ℝ → EuclideanSpace ℝ (Fin d)h':Differentiable ℝ f₀⊢ Differentiable ℝ
(f₀ ∘ fun x =>
match x with
| (t, x) => ⟪x, s.unit⟫_ℝ - c * t.val)
d:ℕc:ℝs:Direction df₀:ℝ → EuclideanSpace ℝ (Fin d)h':Differentiable ℝ f₀⊢ Differentiable ℝ f₀d:ℕc:ℝs:Direction df₀:ℝ → EuclideanSpace ℝ (Fin d)h':Differentiable ℝ f₀⊢ Differentiable ℝ fun x =>
match x with
| (t, x) => ⟪x, s.unit⟫_ℝ - c * t.val
d:ℕc:ℝs:Direction df₀:ℝ → EuclideanSpace ℝ (Fin d)h':Differentiable ℝ f₀⊢ Differentiable ℝ f₀ All goals completed! 🐙
d:ℕc:ℝs:Direction df₀:ℝ → EuclideanSpace ℝ (Fin d)h':Differentiable ℝ f₀⊢ Differentiable ℝ fun x =>
match x with
| (t, x) => ⟪x, s.unit⟫_ℝ - c * t.val d:ℕc:ℝs:Direction df₀:ℝ → EuclideanSpace ℝ (Fin d)h':Differentiable ℝ f₀⊢ Differentiable ℝ fun x => ⟪x.2, s.unit⟫_ℝd:ℕc:ℝs:Direction df₀:ℝ → EuclideanSpace ℝ (Fin d)h':Differentiable ℝ f₀⊢ Differentiable ℝ fun x => c * x.1.val
d:ℕc:ℝs:Direction df₀:ℝ → EuclideanSpace ℝ (Fin d)h':Differentiable ℝ f₀⊢ Differentiable ℝ fun x => ⟪x.2, s.unit⟫_ℝ d:ℕc:ℝs:Direction df₀:ℝ → EuclideanSpace ℝ (Fin d)h':Differentiable ℝ f₀⊢ Differentiable ℝ Prod.sndd:ℕc:ℝs:Direction df₀:ℝ → EuclideanSpace ℝ (Fin d)h':Differentiable ℝ f₀⊢ Differentiable ℝ fun x => s.unit
repeat All goals completed! 🐙
d:ℕc:ℝs:Direction df₀:ℝ → EuclideanSpace ℝ (Fin d)h':Differentiable ℝ f₀⊢ Differentiable ℝ fun x => c * x.1.val All goals completed! 🐙B.3. Time derivatives of plane waves
d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx:Space ds:Direction dh':Differentiable ℝ f₀t:Timei:Fin d⊢ ((fderiv ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t.val) ∘SL (-(c • fderiv ℝ Time.val t))) 1).ofLp i =
((-c • fun t => planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x) t).ofLp iha d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx:Space ds:Direction dh':Differentiable ℝ f₀t:Timei:Fin d⊢ DifferentiableAt ℝ Time.val thg d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx:Space ds:Direction dh':Differentiable ℝ f₀t:Timei:Fin d⊢ DifferentiableAt ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t.val)hf d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx:Space ds:Direction dh':Differentiable ℝ f₀t:Timei:Fin d⊢ DifferentiableAt ℝ (fun t => ⟪x, s.unit⟫_ℝ - c * t.val) t
simp only [ContinuousLinearMap.comp_neg, ContinuousLinearMap.comp_smulₛₗ,
RingHom.id_apply, _root_.neg_apply,
FunLike.coe_smul, Pi.smul_apply, PiLp.neg_apply, PiLp.smul_apply, smul_eq_mul,
neg_mul, neg_inj, mul_eq_mul_left_iff] d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx:Space ds:Direction dh':Differentiable ℝ f₀t:Timei:Fin d⊢ ((fderiv ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t.val) ∘SL fderiv ℝ Time.val t) 1).ofLp i =
(planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x).ofLp i ∨
c = 0ha d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx:Space ds:Direction dh':Differentiable ℝ f₀t:Timei:Fin d⊢ DifferentiableAt ℝ Time.val thg d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx:Space ds:Direction dh':Differentiable ℝ f₀t:Timei:Fin d⊢ DifferentiableAt ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t.val)hf d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx:Space ds:Direction dh':Differentiable ℝ f₀t:Timei:Fin d⊢ DifferentiableAt ℝ (fun t => ⟪x, s.unit⟫_ℝ - c * t.val) t
left d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx:Space ds:Direction dh':Differentiable ℝ f₀t:Timei:Fin d⊢ ((fderiv ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t.val) ∘SL fderiv ℝ Time.val t) 1).ofLp i =
(planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x).ofLp iha d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx:Space ds:Direction dh':Differentiable ℝ f₀t:Timei:Fin d⊢ DifferentiableAt ℝ Time.val thg d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx:Space ds:Direction dh':Differentiable ℝ f₀t:Timei:Fin d⊢ DifferentiableAt ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t.val)hf d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx:Space ds:Direction dh':Differentiable ℝ f₀t:Timei:Fin d⊢ DifferentiableAt ℝ (fun t => ⟪x, s.unit⟫_ℝ - c * t.val) t
simp d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx:Space ds:Direction dh':Differentiable ℝ f₀t:Timei:Fin d⊢ (_root_.deriv f₀ (⟪x, s.unit⟫_ℝ - c * t.val)).ofLp i = (planeWave (fun x => _root_.deriv f₀ x) c s t x).ofLp iha d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx:Space ds:Direction dh':Differentiable ℝ f₀t:Timei:Fin d⊢ DifferentiableAt ℝ Time.val thg d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx:Space ds:Direction dh':Differentiable ℝ f₀t:Timei:Fin d⊢ DifferentiableAt ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t.val)hf d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx:Space ds:Direction dh':Differentiable ℝ f₀t:Timei:Fin d⊢ DifferentiableAt ℝ (fun t => ⟪x, s.unit⟫_ℝ - c * t.val) t
rfl ha d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx:Space ds:Direction dh':Differentiable ℝ f₀t:Timei:Fin d⊢ DifferentiableAt ℝ Time.val thg d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx:Space ds:Direction dh':Differentiable ℝ f₀t:Timei:Fin d⊢ DifferentiableAt ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t.val)hf d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx:Space ds:Direction dh':Differentiable ℝ f₀t:Timei:Fin d⊢ DifferentiableAt ℝ (fun t => ⟪x, s.unit⟫_ℝ - c * t.val) t
repeat fun_prop All goals completed! 🐙
lemma planeWave_time_deriv_time_deriv {d f₀ c x} {s : Direction d}
(h' : ContDiff ℝ 2 f₀) :
∂ₜ (∂ₜ (planeWave f₀ c s · x)) = c ^ 2 • fun t => planeWave (iteratedDeriv 2 f₀) c s t x := by d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx:Space ds:Direction dh':ContDiff ℝ 2 f₀⊢ ∂ₜ (∂ₜ fun x_1 => planeWave f₀ c s x_1 x) = c ^ 2 • fun t => planeWave (iteratedDeriv 2 f₀) c s t x
conv_lhs =>
enter [1, i] d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx:Space ds:Direction dh':ContDiff ℝ 2 f₀i:Time| ∂ₜ (fun x_1 => planeWave f₀ c s x_1 x) i
rw [planeWave_time_deriv (h'.differentiable (by d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx:Space ds:Direction dh':ContDiff ℝ 2 f₀i:Time⊢ 2 ≠ 0 simp All goals completed! 🐙))]
ext t i d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx:Space ds:Direction dh':ContDiff ℝ 2 f₀t:Timei:Fin d⊢ (∂ₜ (-c • fun t => planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x) t).ofLp i =
((c ^ 2 • fun t => planeWave (iteratedDeriv 2 f₀) c s t x) t).ofLp i
rw [Time.deriv_eq, d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx:Space ds:Direction dh':ContDiff ℝ 2 f₀t:Timei:Fin d⊢ ((fderiv ℝ (-c • fun t => planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x) t) 1).ofLp i =
((c ^ 2 • fun t => planeWave (iteratedDeriv 2 f₀) c s t x) t).ofLp i d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx:Space ds:Direction dh':ContDiff ℝ 2 f₀t:Timei:Fin d⊢ ((-c • fderiv ℝ (fun t => planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x) t) 1).ofLp i =
((c ^ 2 • fun t => planeWave (iteratedDeriv 2 f₀) c s t x) t).ofLp i fderiv_const_smul (by d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx:Space ds:Direction dh':ContDiff ℝ 2 f₀t:Timei:Fin d⊢ DifferentiableAt ℝ (fun t => planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x) t d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx:Space ds:Direction dh':ContDiff ℝ 2 f₀t:Timei:Fin d⊢ ((-c • fderiv ℝ (fun t => planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x) t) 1).ofLp i =
((c ^ 2 • fun t => planeWave (iteratedDeriv 2 f₀) c s t x) t).ofLp i fun_prop All goals completed! 🐙 d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx:Space ds:Direction dh':ContDiff ℝ 2 f₀t:Timei:Fin d⊢ ((-c • fderiv ℝ (fun t => planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x) t) 1).ofLp i =
((c ^ 2 • fun t => planeWave (iteratedDeriv 2 f₀) c s t x) t).ofLp i)] d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx:Space ds:Direction dh':ContDiff ℝ 2 f₀t:Timei:Fin d⊢ ((-c • fderiv ℝ (fun t => planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x) t) 1).ofLp i =
((c ^ 2 • fun t => planeWave (iteratedDeriv 2 f₀) c s t x) t).ofLp i
simp only [fderiv_eq_smul_deriv, one_smul, neg_smul, _root_.neg_apply,
FunLike.coe_smul, Pi.smul_apply, PiLp.neg_apply, PiLp.smul_apply, smul_eq_mul] d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx:Space ds:Direction dh':ContDiff ℝ 2 f₀t:Timei:Fin d⊢ -(c * ((fderiv ℝ (fun t => planeWave (fun x => _root_.deriv f₀ x) c s t x) t) 1).ofLp i) =
c ^ 2 * (planeWave (iteratedDeriv 2 f₀) c s t x).ofLp i
rw [← Time.deriv_eq, d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx:Space ds:Direction dh':ContDiff ℝ 2 f₀t:Timei:Fin d⊢ -(c * (∂ₜ (fun t => planeWave (fun x => _root_.deriv f₀ x) c s t x) t).ofLp i) =
c ^ 2 * (planeWave (iteratedDeriv 2 f₀) c s t x).ofLp i d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx:Space ds:Direction dh':ContDiff ℝ 2 f₀t:Timei:Fin d⊢ -(c * ((-c • fun t => planeWave (fun x => (fderiv ℝ (fun x => _root_.deriv f₀ x) x) 1) c s t x) t).ofLp i) =
c ^ 2 * (planeWave (iteratedDeriv 2 f₀) c s t x).ofLp i planeWave_time_deriv (by d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx:Space ds:Direction dh':ContDiff ℝ 2 f₀t:Timei:Fin d⊢ Differentiable ℝ fun x => _root_.deriv f₀ x d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx:Space ds:Direction dh':ContDiff ℝ 2 f₀t:Timei:Fin d⊢ -(c * ((-c • fun t => planeWave (fun x => (fderiv ℝ (fun x => _root_.deriv f₀ x) x) 1) c s t x) t).ofLp i) =
c ^ 2 * (planeWave (iteratedDeriv 2 f₀) c s t x).ofLp i fun_prop All goals completed! 🐙 d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx:Space ds:Direction dh':ContDiff ℝ 2 f₀t:Timei:Fin d⊢ -(c * ((-c • fun t => planeWave (fun x => (fderiv ℝ (fun x => _root_.deriv f₀ x) x) 1) c s t x) t).ofLp i) =
c ^ 2 * (planeWave (iteratedDeriv 2 f₀) c s t x).ofLp i)] d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx:Space ds:Direction dh':ContDiff ℝ 2 f₀t:Timei:Fin d⊢ -(c * ((-c • fun t => planeWave (fun x => (fderiv ℝ (fun x => _root_.deriv f₀ x) x) 1) c s t x) t).ofLp i) =
c ^ 2 * (planeWave (iteratedDeriv 2 f₀) c s t x).ofLp i
simp only [fderiv_eq_smul_deriv, one_smul, Pi.smul_apply, PiLp.smul_apply, smul_eq_mul, neg_mul,
mul_neg, neg_neg] d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx:Space ds:Direction dh':ContDiff ℝ 2 f₀t:Timei:Fin d⊢ c * (c * (planeWave (fun x => _root_.deriv (fun x => _root_.deriv f₀ x) x) c s t x).ofLp i) =
c ^ 2 * (planeWave (iteratedDeriv 2 f₀) c s t x).ofLp i
ring_nf d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx:Space ds:Direction dh':ContDiff ℝ 2 f₀t:Timei:Fin d⊢ c ^ 2 * (planeWave (fun x => _root_.deriv (fun x => _root_.deriv f₀ x) x) c s t x).ofLp i =
c ^ 2 * (planeWave (iteratedDeriv 2 f₀) c s t x).ofLp i
suffices h : (fun x => _root_.deriv (fun x => _root_.deriv f₀ x) x) =
fun x => iteratedDeriv 2 f₀ x by d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx:Space ds:Direction dh':ContDiff ℝ 2 f₀t:Timei:Fin dh:(fun x => _root_.deriv (fun x => _root_.deriv f₀ x) x) = fun x => iteratedDeriv 2 f₀ x⊢ c ^ 2 * (planeWave (fun x => _root_.deriv (fun x => _root_.deriv f₀ x) x) c s t x).ofLp i =
c ^ 2 * (planeWave (iteratedDeriv 2 f₀) c s t x).ofLp i d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx:Space ds:Direction dh':ContDiff ℝ 2 f₀t:Timei:Fin d⊢ (fun x => _root_.deriv (fun x => _root_.deriv f₀ x) x) = fun x => iteratedDeriv 2 f₀ x rw [h d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx:Space ds:Direction dh':ContDiff ℝ 2 f₀t:Timei:Fin dh:(fun x => _root_.deriv (fun x => _root_.deriv f₀ x) x) = fun x => iteratedDeriv 2 f₀ x⊢ c ^ 2 * (planeWave (fun x => iteratedDeriv 2 f₀ x) c s t x).ofLp i =
c ^ 2 * (planeWave (iteratedDeriv 2 f₀) c s t x).ofLp i d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx:Space ds:Direction dh':ContDiff ℝ 2 f₀t:Timei:Fin d⊢ (fun x => _root_.deriv (fun x => _root_.deriv f₀ x) x) = fun x => iteratedDeriv 2 f₀ x] d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx:Space ds:Direction dh':ContDiff ℝ 2 f₀t:Timei:Fin d⊢ (fun x => _root_.deriv (fun x => _root_.deriv f₀ x) x) = fun x => iteratedDeriv 2 f₀ x d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx:Space ds:Direction dh':ContDiff ℝ 2 f₀t:Timei:Fin d⊢ (fun x => _root_.deriv (fun x => _root_.deriv f₀ x) x) = fun x => iteratedDeriv 2 f₀ x
funext x d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx✝:Space ds:Direction dh':ContDiff ℝ 2 f₀t:Timei:Fin dx:ℝ⊢ _root_.deriv (fun x => _root_.deriv f₀ x) x = iteratedDeriv 2 f₀ x
erw [iteratedDeriv_succ d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx✝:Space ds:Direction dh':ContDiff ℝ 2 f₀t:Timei:Fin dx:ℝ⊢ _root_.deriv (fun x => _root_.deriv f₀ x) x = _root_.deriv (iteratedDeriv 1 f₀) x] d:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝx✝:Space ds:Direction dh':ContDiff ℝ 2 f₀t:Timei:Fin dx:ℝ⊢ _root_.deriv (fun x => _root_.deriv f₀ x) x = _root_.deriv (iteratedDeriv 1 f₀) x
simp only [iteratedDeriv_one] All goals completed! 🐙B.4. Space derivatives of plane waves
lemma planeWave_space_deriv {d f₀ c} {s : Direction d}
(h' : Differentiable ℝ f₀) (i : Fin d) :
∂[i] (planeWave f₀ c s t) =
s.unit i • fun x => planeWave (fderiv ℝ f₀ · 1) c s t x:= by t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin d⊢ Space.deriv i (planeWave f₀ c s t) = s.unit.val i • fun x => planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x
ext x j t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ (Space.deriv i (planeWave f₀ c s t) x).ofLp j =
((s.unit.val i • fun x => planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x) x).ofLp j
rw [Space.deriv_eq t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ ((fderiv ℝ (planeWave f₀ c s t) x) (Space.basis i)).ofLp j =
((s.unit.val i • fun x => planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x) x).ofLp j t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ ((fderiv ℝ (planeWave f₀ c s t) x) (Space.basis i)).ofLp j =
((s.unit.val i • fun x => planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x) x).ofLp j] t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ ((fderiv ℝ (planeWave f₀ c s t) x) (Space.basis i)).ofLp j =
((s.unit.val i • fun x => planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x) x).ofLp j
change fderiv ℝ
(f₀ ∘ fun x : Space d => (inner ℝ x s.unit - c * t)) x (Space.basis i) j = _ t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ ((fderiv ℝ (f₀ ∘ fun x => ⟪x, s.unit⟫_ℝ - c * t.val) x) (Space.basis i)).ofLp j =
((s.unit.val i • fun x => planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x) x).ofLp j
rw [fderiv_comp t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ ((fderiv ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t.val) ∘SL fderiv ℝ (fun x => ⟪x, s.unit⟫_ℝ - c * t.val) x) (Space.basis i)).ofLp j =
((s.unit.val i • fun x => planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x) x).ofLp jhg t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ DifferentiableAt ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t.val)hf t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ DifferentiableAt ℝ (fun x => ⟪x, s.unit⟫_ℝ - c * t.val) x t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ ((fderiv ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t.val) ∘SL fderiv ℝ (fun x => ⟪x, s.unit⟫_ℝ - c * t.val) x) (Space.basis i)).ofLp j =
((s.unit.val i • fun x => planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x) x).ofLp jhg t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ DifferentiableAt ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t.val)hf t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ DifferentiableAt ℝ (fun x => ⟪x, s.unit⟫_ℝ - c * t.val) x] t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ ((fderiv ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t.val) ∘SL fderiv ℝ (fun x => ⟪x, s.unit⟫_ℝ - c * t.val) x) (Space.basis i)).ofLp j =
((s.unit.val i • fun x => planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x) x).ofLp jhg t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ DifferentiableAt ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t.val)hf t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ DifferentiableAt ℝ (fun x => ⟪x, s.unit⟫_ℝ - c * t.val) x
simp only [ContinuousLinearMap.coe_comp, Function.comp_apply, fderiv_eq_smul_deriv,
PiLp.smul_apply, smul_eq_mul, one_smul, Pi.smul_apply] t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ (fderiv ℝ (fun x => ⟪x, s.unit⟫_ℝ - c * t.val) x) (Space.basis i) *
(_root_.deriv f₀ (⟪x, s.unit⟫_ℝ - c * t.val)).ofLp j =
s.unit.val i * (planeWave (fun x => _root_.deriv f₀ x) c s t x).ofLp jhg t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ DifferentiableAt ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t.val)hf t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ DifferentiableAt ℝ (fun x => ⟪x, s.unit⟫_ℝ - c * t.val) x
rw [fderiv_sub_const t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ (fderiv ℝ (fun x => ⟪x, s.unit⟫_ℝ) x) (Space.basis i) * (_root_.deriv f₀ (⟪x, s.unit⟫_ℝ - c * t.val)).ofLp j =
s.unit.val i * (planeWave (fun x => _root_.deriv f₀ x) c s t x).ofLp jhg t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ DifferentiableAt ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t.val)hf t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ DifferentiableAt ℝ (fun x => ⟪x, s.unit⟫_ℝ - c * t.val) x t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ (fderiv ℝ (fun x => ⟪x, s.unit⟫_ℝ) x) (Space.basis i) * (_root_.deriv f₀ (⟪x, s.unit⟫_ℝ - c * t.val)).ofLp j =
s.unit.val i * (planeWave (fun x => _root_.deriv f₀ x) c s t x).ofLp jhg t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ DifferentiableAt ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t.val)hf t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ DifferentiableAt ℝ (fun x => ⟪x, s.unit⟫_ℝ - c * t.val) x] t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ (fderiv ℝ (fun x => ⟪x, s.unit⟫_ℝ) x) (Space.basis i) * (_root_.deriv f₀ (⟪x, s.unit⟫_ℝ - c * t.val)).ofLp j =
s.unit.val i * (planeWave (fun x => _root_.deriv f₀ x) c s t x).ofLp jhg t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ DifferentiableAt ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t.val)hf t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ DifferentiableAt ℝ (fun x => ⟪x, s.unit⟫_ℝ - c * t.val) x
rw [fderiv_inner_apply t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ (⟪x, (fderiv ℝ (fun x => s.unit) x) (Space.basis i)⟫_ℝ + ⟪(fderiv ℝ (fun x => x) x) (Space.basis i), s.unit⟫_ℝ) *
(_root_.deriv f₀ (⟪x, s.unit⟫_ℝ - c * t.val)).ofLp j =
s.unit.val i * (planeWave (fun x => _root_.deriv f₀ x) c s t x).ofLp jhf t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ DifferentiableAt ℝ (fun x => x) xhg t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ DifferentiableAt ℝ (fun x => s.unit) xhg t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ DifferentiableAt ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t.val)hf t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ DifferentiableAt ℝ (fun x => ⟪x, s.unit⟫_ℝ - c * t.val) x t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ (⟪x, (fderiv ℝ (fun x => s.unit) x) (Space.basis i)⟫_ℝ + ⟪(fderiv ℝ (fun x => x) x) (Space.basis i), s.unit⟫_ℝ) *
(_root_.deriv f₀ (⟪x, s.unit⟫_ℝ - c * t.val)).ofLp j =
s.unit.val i * (planeWave (fun x => _root_.deriv f₀ x) c s t x).ofLp jhf t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ DifferentiableAt ℝ (fun x => x) xhg t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ DifferentiableAt ℝ (fun x => s.unit) xhg t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ DifferentiableAt ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t.val)hf t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ DifferentiableAt ℝ (fun x => ⟪x, s.unit⟫_ℝ - c * t.val) x] t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ (⟪x, (fderiv ℝ (fun x => s.unit) x) (Space.basis i)⟫_ℝ + ⟪(fderiv ℝ (fun x => x) x) (Space.basis i), s.unit⟫_ℝ) *
(_root_.deriv f₀ (⟪x, s.unit⟫_ℝ - c * t.val)).ofLp j =
s.unit.val i * (planeWave (fun x => _root_.deriv f₀ x) c s t x).ofLp jhf t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ DifferentiableAt ℝ (fun x => x) xhg t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ DifferentiableAt ℝ (fun x => s.unit) xhg t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ DifferentiableAt ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t.val)hf t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ DifferentiableAt ℝ (fun x => ⟪x, s.unit⟫_ℝ - c * t.val) x
simp only [fderiv_fun_const, Pi.zero_apply, _root_.zero_apply, inner_zero_right,
fderiv_fun_id, ContinuousLinearMap.coe_id', id_eq, basis_inner, zero_add, mul_eq_mul_left_iff] t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ (_root_.deriv f₀ (⟪x, s.unit⟫_ℝ - c * t.val)).ofLp j = (planeWave (fun x => _root_.deriv f₀ x) c s t x).ofLp j ∨
s.unit.val i = 0hf t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ DifferentiableAt ℝ (fun x => x) xhg t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ DifferentiableAt ℝ (fun x => s.unit) xhg t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ DifferentiableAt ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t.val)hf t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ DifferentiableAt ℝ (fun x => ⟪x, s.unit⟫_ℝ - c * t.val) x
left t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ (_root_.deriv f₀ (⟪x, s.unit⟫_ℝ - c * t.val)).ofLp j = (planeWave (fun x => _root_.deriv f₀ x) c s t x).ofLp jhf t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ DifferentiableAt ℝ (fun x => x) xhg t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ DifferentiableAt ℝ (fun x => s.unit) xhg t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ DifferentiableAt ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t.val)hf t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ DifferentiableAt ℝ (fun x => ⟪x, s.unit⟫_ℝ - c * t.val) x
simp [planeWave_eq] hf t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ DifferentiableAt ℝ (fun x => x) xhg t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ DifferentiableAt ℝ (fun x => s.unit) xhg t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ DifferentiableAt ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t.val)hf t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dx:Space dj:Fin d⊢ DifferentiableAt ℝ (fun x => ⟪x, s.unit⟫_ℝ - c * t.val) x
repeat fun_prop All goals completed! 🐙
lemma planeWave_apply_space_deriv {d f₀ c} {s : Direction d}
(h' : Differentiable ℝ f₀) (i j : Fin d) :
∂[i] (fun x => planeWave f₀ c s t x j) =
s.unit i • fun x => planeWave (fderiv ℝ f₀ · 1) c s t x j := by t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dj:Fin d⊢ (Space.deriv i fun x => (planeWave f₀ c s t x).ofLp j) =
s.unit.val i • fun x => (planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x).ofLp j
funext x t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dj:Fin dx:Space d⊢ Space.deriv i (fun x => (planeWave f₀ c s t x).ofLp j) x =
(s.unit.val i • fun x => (planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x).ofLp j) x
rw [Space.deriv_eq_fderiv_basis t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dj:Fin dx:Space d⊢ (fderiv ℝ (fun x => (planeWave f₀ c s t x).ofLp j) x) (Space.basis i) =
(s.unit.val i • fun x => (planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x).ofLp j) x t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dj:Fin dx:Space d⊢ (fderiv ℝ (fun x => (planeWave f₀ c s t x).ofLp j) x) (Space.basis i) =
(s.unit.val i • fun x => (planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x).ofLp j) x] t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dj:Fin dx:Space d⊢ (fderiv ℝ (fun x => (planeWave f₀ c s t x).ofLp j) x) (Space.basis i) =
(s.unit.val i • fun x => (planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x).ofLp j) x
change fderiv ℝ (EuclideanSpace.proj j ∘ fun x => (planeWave f₀ c s t x)) x (basis i) = _ t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dj:Fin dx:Space d⊢ (fderiv ℝ (⇑(EuclideanSpace.proj j) ∘ fun x => planeWave f₀ c s t x) x) (Space.basis i) =
(s.unit.val i • fun x => (planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x).ofLp j) x
rw [fderiv_comp t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dj:Fin dx:Space d⊢ (fderiv ℝ (⇑(EuclideanSpace.proj j)) (planeWave f₀ c s t x) ∘SL fderiv ℝ (fun x => planeWave f₀ c s t x) x)
(Space.basis i) =
(s.unit.val i • fun x => (planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x).ofLp j) xhg t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dj:Fin dx:Space d⊢ DifferentiableAt ℝ (⇑(EuclideanSpace.proj j)) (planeWave f₀ c s t x)hf t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dj:Fin dx:Space d⊢ DifferentiableAt ℝ (fun x => planeWave f₀ c s t x) x t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dj:Fin dx:Space d⊢ (fderiv ℝ (⇑(EuclideanSpace.proj j)) (planeWave f₀ c s t x) ∘SL fderiv ℝ (fun x => planeWave f₀ c s t x) x)
(Space.basis i) =
(s.unit.val i • fun x => (planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x).ofLp j) xhg t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dj:Fin dx:Space d⊢ DifferentiableAt ℝ (⇑(EuclideanSpace.proj j)) (planeWave f₀ c s t x)hf t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dj:Fin dx:Space d⊢ DifferentiableAt ℝ (fun x => planeWave f₀ c s t x) x] t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dj:Fin dx:Space d⊢ (fderiv ℝ (⇑(EuclideanSpace.proj j)) (planeWave f₀ c s t x) ∘SL fderiv ℝ (fun x => planeWave f₀ c s t x) x)
(Space.basis i) =
(s.unit.val i • fun x => (planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x).ofLp j) xhg t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dj:Fin dx:Space d⊢ DifferentiableAt ℝ (⇑(EuclideanSpace.proj j)) (planeWave f₀ c s t x)hf t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dj:Fin dx:Space d⊢ DifferentiableAt ℝ (fun x => planeWave f₀ c s t x) x
simp only [ContinuousLinearMap.fderiv, ContinuousLinearMap.coe_comp, Function.comp_apply,
PiLp.proj_apply, fderiv_eq_smul_deriv, one_smul, Pi.smul_apply, smul_eq_mul] t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dj:Fin dx:Space d⊢ ((fderiv ℝ (fun x => planeWave f₀ c s t x) x) (Space.basis i)).ofLp j =
s.unit.val i * (planeWave (fun x => _root_.deriv f₀ x) c s t x).ofLp jhg t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dj:Fin dx:Space d⊢ DifferentiableAt ℝ (⇑(EuclideanSpace.proj j)) (planeWave f₀ c s t x)hf t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dj:Fin dx:Space d⊢ DifferentiableAt ℝ (fun x => planeWave f₀ c s t x) x
rw [← Space.deriv_eq_fderiv_basis, t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dj:Fin dx:Space d⊢ (Space.deriv i (fun x => planeWave f₀ c s t x) x).ofLp j =
s.unit.val i * (planeWave (fun x => _root_.deriv f₀ x) c s t x).ofLp jhg t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dj:Fin dx:Space d⊢ DifferentiableAt ℝ (⇑(EuclideanSpace.proj j)) (planeWave f₀ c s t x)hf t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dj:Fin dx:Space d⊢ DifferentiableAt ℝ (fun x => planeWave f₀ c s t x) x t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dj:Fin dx:Space d⊢ ((s.unit.val i • fun x => planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x) x).ofLp j =
s.unit.val i * (planeWave (fun x => _root_.deriv f₀ x) c s t x).ofLp jh' t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dj:Fin dx:Space d⊢ Differentiable ℝ f₀hg t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dj:Fin dx:Space d⊢ DifferentiableAt ℝ (⇑(EuclideanSpace.proj j)) (planeWave f₀ c s t x)hf t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dj:Fin dx:Space d⊢ DifferentiableAt ℝ (fun x => planeWave f₀ c s t x) x planeWave_space_deriv t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dj:Fin dx:Space d⊢ ((s.unit.val i • fun x => planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x) x).ofLp j =
s.unit.val i * (planeWave (fun x => _root_.deriv f₀ x) c s t x).ofLp jh' t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dj:Fin dx:Space d⊢ Differentiable ℝ f₀hg t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dj:Fin dx:Space d⊢ DifferentiableAt ℝ (⇑(EuclideanSpace.proj j)) (planeWave f₀ c s t x)hf t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dj:Fin dx:Space d⊢ DifferentiableAt ℝ (fun x => planeWave f₀ c s t x) x t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dj:Fin dx:Space d⊢ ((s.unit.val i • fun x => planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x) x).ofLp j =
s.unit.val i * (planeWave (fun x => _root_.deriv f₀ x) c s t x).ofLp jh' t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dj:Fin dx:Space d⊢ Differentiable ℝ f₀hg t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dj:Fin dx:Space d⊢ DifferentiableAt ℝ (⇑(EuclideanSpace.proj j)) (planeWave f₀ c s t x)hf t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dj:Fin dx:Space d⊢ DifferentiableAt ℝ (fun x => planeWave f₀ c s t x) x] t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dj:Fin dx:Space d⊢ ((s.unit.val i • fun x => planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x) x).ofLp j =
s.unit.val i * (planeWave (fun x => _root_.deriv f₀ x) c s t x).ofLp jh' t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dj:Fin dx:Space d⊢ Differentiable ℝ f₀hg t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dj:Fin dx:Space d⊢ DifferentiableAt ℝ (⇑(EuclideanSpace.proj j)) (planeWave f₀ c s t x)hf t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dj:Fin dx:Space d⊢ DifferentiableAt ℝ (fun x => planeWave f₀ c s t x) x
rfl h' t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dj:Fin dx:Space d⊢ Differentiable ℝ f₀hg t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dj:Fin dx:Space d⊢ DifferentiableAt ℝ (⇑(EuclideanSpace.proj j)) (planeWave f₀ c s t x)hf t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dj:Fin dx:Space d⊢ DifferentiableAt ℝ (fun x => planeWave f₀ c s t x) x
· h' t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dj:Fin dx:Space d⊢ Differentiable ℝ f₀ fun_prop All goals completed! 🐙
· hg t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dj:Fin dx:Space d⊢ DifferentiableAt ℝ (⇑(EuclideanSpace.proj j)) (planeWave f₀ c s t x) fun_prop All goals completed! 🐙
· hf t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':Differentiable ℝ f₀i:Fin dj:Fin dx:Space d⊢ DifferentiableAt ℝ (fun x => planeWave f₀ c s t x) x fun_prop All goals completed! 🐙
lemma planeWave_space_deriv_space_deriv {d f₀ c} {s : Direction d}
(h' : ContDiff ℝ 2 f₀) (i : Fin d) :
∂[i] (∂[i] (planeWave f₀ c s t)) =
s.unit i ^ 2 • fun x => planeWave (iteratedDeriv 2 f₀ ·) c s t x := by t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin d⊢ Space.deriv i (Space.deriv i (planeWave f₀ c s t)) =
s.unit.val i ^ 2 • fun x => planeWave (fun x => iteratedDeriv 2 f₀ x) c s t x
conv_lhs =>
enter [2, j] t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Space d| Space.deriv i (planeWave f₀ c s t) j
rw [planeWave_space_deriv (h'.differentiable (by t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Space d⊢ 2 ≠ 0 simp All goals completed! 🐙)) i]
funext x t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx:Space d⊢ Space.deriv i (s.unit.val i • fun x => planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x) x =
(s.unit.val i ^ 2 • fun x => planeWave (fun x => iteratedDeriv 2 f₀ x) c s t x) x
rw [Space.deriv_eq_fderiv_basis, t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx:Space d⊢ (fderiv ℝ (s.unit.val i • fun x => planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x) x) (Space.basis i) =
(s.unit.val i ^ 2 • fun x => planeWave (fun x => iteratedDeriv 2 f₀ x) c s t x) x t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx:Space d⊢ (s.unit.val i • fderiv ℝ (fun x => planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x) x) (Space.basis i) =
(s.unit.val i ^ 2 • fun x => planeWave (fun x => iteratedDeriv 2 f₀ x) c s t x) xh t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx:Space d⊢ DifferentiableAt ℝ (fun x => planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x) x fderiv_const_smul t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx:Space d⊢ (s.unit.val i • fderiv ℝ (fun x => planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x) x) (Space.basis i) =
(s.unit.val i ^ 2 • fun x => planeWave (fun x => iteratedDeriv 2 f₀ x) c s t x) xh t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx:Space d⊢ DifferentiableAt ℝ (fun x => planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x) x t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx:Space d⊢ (s.unit.val i • fderiv ℝ (fun x => planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x) x) (Space.basis i) =
(s.unit.val i ^ 2 • fun x => planeWave (fun x => iteratedDeriv 2 f₀ x) c s t x) xh t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx:Space d⊢ DifferentiableAt ℝ (fun x => planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x) x] t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx:Space d⊢ (s.unit.val i • fderiv ℝ (fun x => planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x) x) (Space.basis i) =
(s.unit.val i ^ 2 • fun x => planeWave (fun x => iteratedDeriv 2 f₀ x) c s t x) xh t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx:Space d⊢ DifferentiableAt ℝ (fun x => planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x) x
simp only [fderiv_eq_smul_deriv, one_smul, FunLike.coe_smul, Pi.smul_apply] t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx:Space d⊢ s.unit.val i • (fderiv ℝ (fun x => planeWave (fun x => _root_.deriv f₀ x) c s t x) x) (Space.basis i) =
s.unit.val i ^ 2 • planeWave (fun x => iteratedDeriv 2 f₀ x) c s t xh t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx:Space d⊢ DifferentiableAt ℝ (fun x => planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x) x
rw [← Space.deriv_eq_fderiv_basis, t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx:Space d⊢ s.unit.val i • Space.deriv i (fun x => planeWave (fun x => _root_.deriv f₀ x) c s t x) x =
s.unit.val i ^ 2 • planeWave (fun x => iteratedDeriv 2 f₀ x) c s t xh t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx:Space d⊢ DifferentiableAt ℝ (fun x => planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x) x t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx:Space d⊢ s.unit.val i • (s.unit.val i • fun x => planeWave (fun x => (fderiv ℝ (fun x => _root_.deriv f₀ x) x) 1) c s t x) x =
s.unit.val i ^ 2 • planeWave (fun x => iteratedDeriv 2 f₀ x) c s t xh' t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx:Space d⊢ Differentiable ℝ fun x => _root_.deriv f₀ xh t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx:Space d⊢ DifferentiableAt ℝ (fun x => planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x) x planeWave_space_deriv t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx:Space d⊢ s.unit.val i • (s.unit.val i • fun x => planeWave (fun x => (fderiv ℝ (fun x => _root_.deriv f₀ x) x) 1) c s t x) x =
s.unit.val i ^ 2 • planeWave (fun x => iteratedDeriv 2 f₀ x) c s t xh' t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx:Space d⊢ Differentiable ℝ fun x => _root_.deriv f₀ xh t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx:Space d⊢ DifferentiableAt ℝ (fun x => planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x) x t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx:Space d⊢ s.unit.val i • (s.unit.val i • fun x => planeWave (fun x => (fderiv ℝ (fun x => _root_.deriv f₀ x) x) 1) c s t x) x =
s.unit.val i ^ 2 • planeWave (fun x => iteratedDeriv 2 f₀ x) c s t xh' t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx:Space d⊢ Differentiable ℝ fun x => _root_.deriv f₀ xh t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx:Space d⊢ DifferentiableAt ℝ (fun x => planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x) x] t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx:Space d⊢ s.unit.val i • (s.unit.val i • fun x => planeWave (fun x => (fderiv ℝ (fun x => _root_.deriv f₀ x) x) 1) c s t x) x =
s.unit.val i ^ 2 • planeWave (fun x => iteratedDeriv 2 f₀ x) c s t xh' t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx:Space d⊢ Differentiable ℝ fun x => _root_.deriv f₀ xh t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx:Space d⊢ DifferentiableAt ℝ (fun x => planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x) x
simp only [fderiv_eq_smul_deriv, one_smul, Pi.smul_apply] t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx:Space d⊢ s.unit.val i • s.unit.val i • planeWave (fun x => _root_.deriv (fun x => _root_.deriv f₀ x) x) c s t x =
s.unit.val i ^ 2 • planeWave (fun x => iteratedDeriv 2 f₀ x) c s t xh' t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx:Space d⊢ Differentiable ℝ fun x => _root_.deriv f₀ xh t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx:Space d⊢ DifferentiableAt ℝ (fun x => planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x) x
rw [smul_smul t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx:Space d⊢ (s.unit.val i * s.unit.val i) • planeWave (fun x => _root_.deriv (fun x => _root_.deriv f₀ x) x) c s t x =
s.unit.val i ^ 2 • planeWave (fun x => iteratedDeriv 2 f₀ x) c s t xh' t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx:Space d⊢ Differentiable ℝ fun x => _root_.deriv f₀ xh t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx:Space d⊢ DifferentiableAt ℝ (fun x => planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x) x t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx:Space d⊢ (s.unit.val i * s.unit.val i) • planeWave (fun x => _root_.deriv (fun x => _root_.deriv f₀ x) x) c s t x =
s.unit.val i ^ 2 • planeWave (fun x => iteratedDeriv 2 f₀ x) c s t xh' t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx:Space d⊢ Differentiable ℝ fun x => _root_.deriv f₀ xh t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx:Space d⊢ DifferentiableAt ℝ (fun x => planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x) x] t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx:Space d⊢ (s.unit.val i * s.unit.val i) • planeWave (fun x => _root_.deriv (fun x => _root_.deriv f₀ x) x) c s t x =
s.unit.val i ^ 2 • planeWave (fun x => iteratedDeriv 2 f₀ x) c s t xh' t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx:Space d⊢ Differentiable ℝ fun x => _root_.deriv f₀ xh t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx:Space d⊢ DifferentiableAt ℝ (fun x => planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x) x
congr 1 e_a t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx:Space d⊢ s.unit.val i * s.unit.val i = s.unit.val i ^ 2e_a t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx:Space d⊢ planeWave (fun x => _root_.deriv (fun x => _root_.deriv f₀ x) x) c s t x =
planeWave (fun x => iteratedDeriv 2 f₀ x) c s t xh' t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx:Space d⊢ Differentiable ℝ fun x => _root_.deriv f₀ xh t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx:Space d⊢ DifferentiableAt ℝ (fun x => planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x) x
· e_a t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx:Space d⊢ s.unit.val i * s.unit.val i = s.unit.val i ^ 2 exact Eq.symm (pow_two (s.unit i)) All goals completed! 🐙
· e_a t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx:Space d⊢ planeWave (fun x => _root_.deriv (fun x => _root_.deriv f₀ x) x) c s t x =
planeWave (fun x => iteratedDeriv 2 f₀ x) c s t x congr e_a.e_f₀ t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx:Space d⊢ (fun x => _root_.deriv (fun x => _root_.deriv f₀ x) x) = fun x => iteratedDeriv 2 f₀ x
funext x e_a.e_f₀ t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx✝:Space dx:ℝ⊢ _root_.deriv (fun x => _root_.deriv f₀ x) x = iteratedDeriv 2 f₀ x
rw [iteratedDeriv_succ e_a.e_f₀ t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx✝:Space dx:ℝ⊢ _root_.deriv (fun x => _root_.deriv f₀ x) x = _root_.deriv (iteratedDeriv 1 f₀) x e_a.e_f₀ t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx✝:Space dx:ℝ⊢ _root_.deriv (fun x => _root_.deriv f₀ x) x = _root_.deriv (iteratedDeriv 1 f₀) x]e_a.e_f₀ t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx✝:Space dx:ℝ⊢ _root_.deriv (fun x => _root_.deriv f₀ x) x = _root_.deriv (iteratedDeriv 1 f₀) x
simp All goals completed! 🐙
· h' t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx:Space d⊢ Differentiable ℝ fun x => _root_.deriv f₀ x fun_prop All goals completed! 🐙
· h t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dx:Space d⊢ DifferentiableAt ℝ (fun x => planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x) x fun_prop All goals completed! 🐙
lemma planeWave_apply_space_deriv_space_deriv {d f₀ c} {s : Direction d}
(h' : ContDiff ℝ 2 f₀) (i j : Fin d) :
∂[i] (∂[i] (fun x => planeWave f₀ c s t x j)) =
(s.unit i) ^ 2 • fun x => planeWave (iteratedDeriv 2 f₀ ·) c s t x j := by t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin d⊢ Space.deriv i (Space.deriv i fun x => (planeWave f₀ c s t x).ofLp j) =
s.unit.val i ^ 2 • fun x => (planeWave (fun x => iteratedDeriv 2 f₀ x) c s t x).ofLp j
conv_lhs =>
enter [2, j] t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj✝:Fin dj:Space d| Space.deriv i (fun x => (planeWave f₀ c s t x).ofLp j✝) j
rw [planeWave_apply_space_deriv (h'.differentiable (by t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj✝:Fin dj:Space d⊢ 2 ≠ 0 simp All goals completed! 🐙)) i]
funext x t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ Space.deriv i (s.unit.val i • fun x => (planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x).ofLp j) x =
(s.unit.val i ^ 2 • fun x => (planeWave (fun x => iteratedDeriv 2 f₀ x) c s t x).ofLp j) x
rw [Space.deriv_eq_fderiv_basis, t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ (fderiv ℝ (s.unit.val i • fun x => (planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x).ofLp j) x) (Space.basis i) =
(s.unit.val i ^ 2 • fun x => (planeWave (fun x => iteratedDeriv 2 f₀ x) c s t x).ofLp j) x t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ (s.unit.val i • fderiv ℝ (fun x => (planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x).ofLp j) x) (Space.basis i) =
(s.unit.val i ^ 2 • fun x => (planeWave (fun x => iteratedDeriv 2 f₀ x) c s t x).ofLp j) xh t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ DifferentiableAt ℝ (fun x => (planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x).ofLp j) x fderiv_const_smul t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ (s.unit.val i • fderiv ℝ (fun x => (planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x).ofLp j) x) (Space.basis i) =
(s.unit.val i ^ 2 • fun x => (planeWave (fun x => iteratedDeriv 2 f₀ x) c s t x).ofLp j) xh t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ DifferentiableAt ℝ (fun x => (planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x).ofLp j) x t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ (s.unit.val i • fderiv ℝ (fun x => (planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x).ofLp j) x) (Space.basis i) =
(s.unit.val i ^ 2 • fun x => (planeWave (fun x => iteratedDeriv 2 f₀ x) c s t x).ofLp j) xh t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ DifferentiableAt ℝ (fun x => (planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x).ofLp j) x] t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ (s.unit.val i • fderiv ℝ (fun x => (planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x).ofLp j) x) (Space.basis i) =
(s.unit.val i ^ 2 • fun x => (planeWave (fun x => iteratedDeriv 2 f₀ x) c s t x).ofLp j) xh t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ DifferentiableAt ℝ (fun x => (planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x).ofLp j) x
simp only [fderiv_eq_smul_deriv, one_smul, FunLike.coe_smul, Pi.smul_apply,
smul_eq_mul] t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ s.unit.val i * (fderiv ℝ (fun x => (planeWave (fun x => _root_.deriv f₀ x) c s t x).ofLp j) x) (Space.basis i) =
s.unit.val i ^ 2 * (planeWave (fun x => iteratedDeriv 2 f₀ x) c s t x).ofLp jh t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ DifferentiableAt ℝ (fun x => (planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x).ofLp j) x
rw [← Space.deriv_eq_fderiv_basis, t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ s.unit.val i * Space.deriv i (fun x => (planeWave (fun x => _root_.deriv f₀ x) c s t x).ofLp j) x =
s.unit.val i ^ 2 * (planeWave (fun x => iteratedDeriv 2 f₀ x) c s t x).ofLp jh t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ DifferentiableAt ℝ (fun x => (planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x).ofLp j) x t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ s.unit.val i *
(s.unit.val i • fun x => (planeWave (fun x => (fderiv ℝ (fun x => _root_.deriv f₀ x) x) 1) c s t x).ofLp j) x =
s.unit.val i ^ 2 * (planeWave (fun x => iteratedDeriv 2 f₀ x) c s t x).ofLp jh' t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ Differentiable ℝ fun x => _root_.deriv f₀ xh t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ DifferentiableAt ℝ (fun x => (planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x).ofLp j) x planeWave_apply_space_deriv t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ s.unit.val i *
(s.unit.val i • fun x => (planeWave (fun x => (fderiv ℝ (fun x => _root_.deriv f₀ x) x) 1) c s t x).ofLp j) x =
s.unit.val i ^ 2 * (planeWave (fun x => iteratedDeriv 2 f₀ x) c s t x).ofLp jh' t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ Differentiable ℝ fun x => _root_.deriv f₀ xh t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ DifferentiableAt ℝ (fun x => (planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x).ofLp j) x t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ s.unit.val i *
(s.unit.val i • fun x => (planeWave (fun x => (fderiv ℝ (fun x => _root_.deriv f₀ x) x) 1) c s t x).ofLp j) x =
s.unit.val i ^ 2 * (planeWave (fun x => iteratedDeriv 2 f₀ x) c s t x).ofLp jh' t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ Differentiable ℝ fun x => _root_.deriv f₀ xh t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ DifferentiableAt ℝ (fun x => (planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x).ofLp j) x] t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ s.unit.val i *
(s.unit.val i • fun x => (planeWave (fun x => (fderiv ℝ (fun x => _root_.deriv f₀ x) x) 1) c s t x).ofLp j) x =
s.unit.val i ^ 2 * (planeWave (fun x => iteratedDeriv 2 f₀ x) c s t x).ofLp jh' t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ Differentiable ℝ fun x => _root_.deriv f₀ xh t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ DifferentiableAt ℝ (fun x => (planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x).ofLp j) x
simp only [fderiv_eq_smul_deriv, one_smul, Pi.smul_apply, smul_eq_mul] t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ s.unit.val i * (s.unit.val i * (planeWave (fun x => _root_.deriv (fun x => _root_.deriv f₀ x) x) c s t x).ofLp j) =
s.unit.val i ^ 2 * (planeWave (fun x => iteratedDeriv 2 f₀ x) c s t x).ofLp jh' t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ Differentiable ℝ fun x => _root_.deriv f₀ xh t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ DifferentiableAt ℝ (fun x => (planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x).ofLp j) x
ring_nf t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ s.unit.val i ^ 2 * (planeWave (fun x => _root_.deriv (fun x => _root_.deriv f₀ x) x) c s t x).ofLp j =
s.unit.val i ^ 2 * (planeWave (fun x => iteratedDeriv 2 f₀ x) c s t x).ofLp jh' t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ Differentiable ℝ fun x => _root_.deriv f₀ xh t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ DifferentiableAt ℝ (fun x => (planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x).ofLp j) x
suffices h : (fun x => _root_.deriv (fun x => _root_.deriv f₀ x) x) =
fun x => iteratedDeriv 2 f₀ x by t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space dh:(fun x => _root_.deriv (fun x => _root_.deriv f₀ x) x) = fun x => iteratedDeriv 2 f₀ x⊢ s.unit.val i ^ 2 * (planeWave (fun x => _root_.deriv (fun x => _root_.deriv f₀ x) x) c s t x).ofLp j =
s.unit.val i ^ 2 * (planeWave (fun x => iteratedDeriv 2 f₀ x) c s t x).ofLp j t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ (fun x => _root_.deriv (fun x => _root_.deriv f₀ x) x) = fun x => iteratedDeriv 2 f₀ xh' t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ Differentiable ℝ fun x => _root_.deriv f₀ xh t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ DifferentiableAt ℝ (fun x => (planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x).ofLp j) x rw [h t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space dh:(fun x => _root_.deriv (fun x => _root_.deriv f₀ x) x) = fun x => iteratedDeriv 2 f₀ x⊢ s.unit.val i ^ 2 * (planeWave (fun x => iteratedDeriv 2 f₀ x) c s t x).ofLp j =
s.unit.val i ^ 2 * (planeWave (fun x => iteratedDeriv 2 f₀ x) c s t x).ofLp j t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ (fun x => _root_.deriv (fun x => _root_.deriv f₀ x) x) = fun x => iteratedDeriv 2 f₀ xh' t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ Differentiable ℝ fun x => _root_.deriv f₀ xh t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ DifferentiableAt ℝ (fun x => (planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x).ofLp j) x] t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ (fun x => _root_.deriv (fun x => _root_.deriv f₀ x) x) = fun x => iteratedDeriv 2 f₀ xh' t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ Differentiable ℝ fun x => _root_.deriv f₀ xh t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ DifferentiableAt ℝ (fun x => (planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x).ofLp j) x t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ (fun x => _root_.deriv (fun x => _root_.deriv f₀ x) x) = fun x => iteratedDeriv 2 f₀ xh' t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ Differentiable ℝ fun x => _root_.deriv f₀ xh t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ DifferentiableAt ℝ (fun x => (planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x).ofLp j) x
ext x i t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i✝:Fin dj:Fin dx✝:Space dx:ℝi:Fin d⊢ (_root_.deriv (fun x => _root_.deriv f₀ x) x).ofLp i = (iteratedDeriv 2 f₀ x).ofLp ih' t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ Differentiable ℝ fun x => _root_.deriv f₀ xh t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ DifferentiableAt ℝ (fun x => (planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x).ofLp j) x
erw [iteratedDeriv_succ' t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i✝:Fin dj:Fin dx✝:Space dx:ℝi:Fin d⊢ (_root_.deriv (fun x => _root_.deriv f₀ x) x).ofLp i = (iteratedDeriv 1 (_root_.deriv f₀) x).ofLp ih' t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ Differentiable ℝ fun x => _root_.deriv f₀ xh t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ DifferentiableAt ℝ (fun x => (planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x).ofLp j) x] t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i✝:Fin dj:Fin dx✝:Space dx:ℝi:Fin d⊢ (_root_.deriv (fun x => _root_.deriv f₀ x) x).ofLp i = (iteratedDeriv 1 (_root_.deriv f₀) x).ofLp ih' t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ Differentiable ℝ fun x => _root_.deriv f₀ xh t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ DifferentiableAt ℝ (fun x => (planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x).ofLp j) x
simp only [iteratedDeriv_one] h' t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ Differentiable ℝ fun x => _root_.deriv f₀ xh t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀i:Fin dj:Fin dx:Space d⊢ DifferentiableAt ℝ (fun x => (planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x).ofLp j) x
repeat fun_prop All goals completed! 🐙B.5. Laplacian of plane waves
lemma planeWave_laplacian {d f₀ c} {s : Direction d} (h' : ContDiff ℝ 2 f₀) :
Δᵥ (planeWave f₀ c s t) = fun x => planeWave (iteratedDeriv 2 f₀ ·) c s t x := by t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀⊢ Δᵥ (planeWave f₀ c s t) = fun x => planeWave (fun x => iteratedDeriv 2 f₀ x) c s t x
ext x j t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀x:Space dj:Fin d⊢ (Δᵥ (planeWave f₀ c s t) x).ofLp j = (planeWave (fun x => iteratedDeriv 2 f₀ x) c s t x).ofLp j
rw [laplacianVec t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀x:Space dj:Fin d⊢ (WithLp.toLp 2 fun i => Δ (fun x => (planeWave f₀ c s t x).ofLp i) x).ofLp j =
(planeWave (fun x => iteratedDeriv 2 f₀ x) c s t x).ofLp j t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀x:Space dj:Fin d⊢ (WithLp.toLp 2 fun i => Δ (fun x => (planeWave f₀ c s t x).ofLp i) x).ofLp j =
(planeWave (fun x => iteratedDeriv 2 f₀ x) c s t x).ofLp j] t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀x:Space dj:Fin d⊢ (WithLp.toLp 2 fun i => Δ (fun x => (planeWave f₀ c s t x).ofLp i) x).ofLp j =
(planeWave (fun x => iteratedDeriv 2 f₀ x) c s t x).ofLp j
conv_lhs =>
enter [1, 2, i] t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀x:Space dj:Fin di:Fin d| Δ (fun x => (planeWave f₀ c s t x).ofLp i) x
rw [laplacian_eq_sum_snd_deriv] t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀x:Space dj:Fin di:Fin d| (fun x => ∑ i_1, Space.deriv i_1 (Space.deriv i_1 fun x => (planeWave f₀ c s t x).ofLp i) x) x
enter [0, x, 2, i] t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀x✝:Space dj:Fin di✝:Fin dx:Space di:Fin d| Space.deriv i (Space.deriv i fun x => (planeWave f₀ c s t x).ofLp i✝) x
rw [planeWave_apply_space_deriv_space_deriv h'] t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀x✝:Space dj:Fin di✝:Fin dx:Space di:Fin d| (s.unit.val i ^ 2 • fun x => (planeWave (fun x => iteratedDeriv 2 f₀ x) c s t x).ofLp i✝) x
simp only [Pi.smul_apply, smul_eq_mul] t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀x:Space dj:Fin d⊢ ∑ x_1, s.unit.val x_1 ^ 2 * (planeWave (fun x => iteratedDeriv 2 f₀ x) c s t x).ofLp j =
(planeWave (fun x => iteratedDeriv 2 f₀ x) c s t x).ofLp j
rw [← Finset.sum_mul t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀x:Space dj:Fin d⊢ (∑ i, s.unit.val i ^ 2) * (planeWave (fun x => iteratedDeriv 2 f₀ x) c s t x).ofLp j =
(planeWave (fun x => iteratedDeriv 2 f₀ x) c s t x).ofLp j t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀x:Space dj:Fin d⊢ (∑ i, s.unit.val i ^ 2) * (planeWave (fun x => iteratedDeriv 2 f₀ x) c s t x).ofLp j =
(planeWave (fun x => iteratedDeriv 2 f₀ x) c s t x).ofLp j] t:Timed:ℕf₀:ℝ → EuclideanSpace ℝ (Fin d)c:ℝs:Direction dh':ContDiff ℝ 2 f₀x:Space dj:Fin d⊢ (∑ i, s.unit.val i ^ 2) * (planeWave (fun x => iteratedDeriv 2 f₀ x) c s t x).ofLp j =
(planeWave (fun x => iteratedDeriv 2 f₀ x) c s t x).ofLp j
simp All goals completed! 🐙B.6. Plane waves satisfy the wave equation
The plane wave satisfies the wave equation.
theorem planeWave_waveEquation (c : ℝ) (s : Direction d)
(f₀ : ℝ → EuclideanSpace ℝ (Fin d)) (hf₀ : ContDiff ℝ 2 f₀) :
∀ t x, WaveEquation (planeWave f₀ c s) t x c := by d:ℕc:ℝs:Direction df₀:ℝ → EuclideanSpace ℝ (Fin d)hf₀:ContDiff ℝ 2 f₀⊢ ∀ (t : Time) (x : Space d), WaveEquation (planeWave f₀ c s) t x c
intro t x d:ℕc:ℝs:Direction df₀:ℝ → EuclideanSpace ℝ (Fin d)hf₀:ContDiff ℝ 2 f₀t:Timex:Space d⊢ WaveEquation (planeWave f₀ c s) t x c
rw [WaveEquation, d:ℕc:ℝs:Direction df₀:ℝ → EuclideanSpace ℝ (Fin d)hf₀:ContDiff ℝ 2 f₀t:Timex:Space d⊢ c ^ 2 • Δᵥ (planeWave f₀ c s t) x - ∂ₜ (fun t => ∂ₜ (fun t => planeWave f₀ c s t x) t) t = 0 d:ℕc:ℝs:Direction df₀:ℝ → EuclideanSpace ℝ (Fin d)hf₀:ContDiff ℝ 2 f₀t:Timex:Space d⊢ c ^ 2 • (fun x => planeWave (fun x => iteratedDeriv 2 f₀ x) c s t x) x -
(c ^ 2 • fun t => planeWave (iteratedDeriv 2 f₀) c s t x) t =
0 planeWave_laplacian hf₀, d:ℕc:ℝs:Direction df₀:ℝ → EuclideanSpace ℝ (Fin d)hf₀:ContDiff ℝ 2 f₀t:Timex:Space d⊢ c ^ 2 • (fun x => planeWave (fun x => iteratedDeriv 2 f₀ x) c s t x) x -
∂ₜ (fun t => ∂ₜ (fun t => planeWave f₀ c s t x) t) t =
0 d:ℕc:ℝs:Direction df₀:ℝ → EuclideanSpace ℝ (Fin d)hf₀:ContDiff ℝ 2 f₀t:Timex:Space d⊢ c ^ 2 • (fun x => planeWave (fun x => iteratedDeriv 2 f₀ x) c s t x) x -
(c ^ 2 • fun t => planeWave (iteratedDeriv 2 f₀) c s t x) t =
0 planeWave_time_deriv_time_deriv hf₀ d:ℕc:ℝs:Direction df₀:ℝ → EuclideanSpace ℝ (Fin d)hf₀:ContDiff ℝ 2 f₀t:Timex:Space d⊢ c ^ 2 • (fun x => planeWave (fun x => iteratedDeriv 2 f₀ x) c s t x) x -
(c ^ 2 • fun t => planeWave (iteratedDeriv 2 f₀) c s t x) t =
0 d:ℕc:ℝs:Direction df₀:ℝ → EuclideanSpace ℝ (Fin d)hf₀:ContDiff ℝ 2 f₀t:Timex:Space d⊢ c ^ 2 • (fun x => planeWave (fun x => iteratedDeriv 2 f₀ x) c s t x) x -
(c ^ 2 • fun t => planeWave (iteratedDeriv 2 f₀) c s t x) t =
0] d:ℕc:ℝs:Direction df₀:ℝ → EuclideanSpace ℝ (Fin d)hf₀:ContDiff ℝ 2 f₀t:Timex:Space d⊢ c ^ 2 • (fun x => planeWave (fun x => iteratedDeriv 2 f₀ x) c s t x) x -
(c ^ 2 • fun t => planeWave (iteratedDeriv 2 f₀) c s t x) t =
0
simp All goals completed! 🐙C. Old lemmas used throughout files
These lemmas will eventually be moved, renamed and/or replaced.
lemma wave_differentiable {s : Direction d} {c : ℝ} {x : Space d} :
DifferentiableAt ℝ (fun x => inner ℝ x s.unit - c * t) x := by d:ℕt:ℝs:Direction dc:ℝx:Space d⊢ DifferentiableAt ℝ (fun x => ⟪x, s.unit⟫_ℝ - c * t) x
apply DifferentiableAt.sub hf d:ℕt:ℝs:Direction dc:ℝx:Space d⊢ DifferentiableAt ℝ (fun x => ⟪x, s.unit⟫_ℝ) xhg d:ℕt:ℝs:Direction dc:ℝx:Space d⊢ DifferentiableAt ℝ (fun x => c * t) x
apply DifferentiableAt.inner hf.hf d:ℕt:ℝs:Direction dc:ℝx:Space d⊢ DifferentiableAt ℝ (fun x => x) xhf.hg d:ℕt:ℝs:Direction dc:ℝx:Space d⊢ DifferentiableAt ℝ (fun x => s.unit) xhg d:ℕt:ℝs:Direction dc:ℝx:Space d⊢ DifferentiableAt ℝ (fun x => c * t) x
repeat fun_prop All goals completed! 🐙
lemma wave_dx2 {u v : Fin d} {s : Direction d}
{f₀' : ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)} {f₀'' : ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)}
(h'' : ∀ x, HasFDerivAt (fun x' => f₀' x' 1) (f₀'' x) x) :
(fderiv ℝ (fun x' => (inner ℝ ((f₀' (inner ℝ x' s.unit - c * t)) (s.unit u))
(EuclideanSpace.single v 1))) x) (Space.basis u)
=
inner ℝ ((s.unit u) ^ 2 • f₀'' (inner ℝ x s.unit - c * t) 1) (EuclideanSpace.single v 1) := by d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ (fderiv ℝ (fun x' => ⟪(f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u), EuclideanSpace.single v 1⟫_ℝ) x) (Space.basis u) =
⟪s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1, EuclideanSpace.single v 1⟫_ℝ
rw [fderiv_inner_apply d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ ⟪(f₀' (⟪x, s.unit⟫_ℝ - c * t)) (s.unit.val u), (fderiv ℝ (fun x' => EuclideanSpace.single v 1) x) (Space.basis u)⟫_ℝ +
⟪(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u),
EuclideanSpace.single v 1⟫_ℝ =
⟪s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1, EuclideanSpace.single v 1⟫_ℝhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => EuclideanSpace.single v 1) x d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ ⟪(f₀' (⟪x, s.unit⟫_ℝ - c * t)) (s.unit.val u), (fderiv ℝ (fun x' => EuclideanSpace.single v 1) x) (Space.basis u)⟫_ℝ +
⟪(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u),
EuclideanSpace.single v 1⟫_ℝ =
⟪s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1, EuclideanSpace.single v 1⟫_ℝhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => EuclideanSpace.single v 1) x] d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ ⟪(f₀' (⟪x, s.unit⟫_ℝ - c * t)) (s.unit.val u), (fderiv ℝ (fun x' => EuclideanSpace.single v 1) x) (Space.basis u)⟫_ℝ +
⟪(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u),
EuclideanSpace.single v 1⟫_ℝ =
⟪s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1, EuclideanSpace.single v 1⟫_ℝhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => EuclideanSpace.single v 1) x
have hdi' : (fderiv ℝ (fun x' => (f₀' (inner ℝ x' s.unit - c * t))
(s.unit u)) x) (Space.basis u)
=
(s.unit u) ^ 2 • (f₀'' (inner ℝ x s.unit - c * t) 1) := by d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ (fderiv ℝ (fun x' => ⟪(f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u), EuclideanSpace.single v 1⟫_ℝ) x) (Space.basis u) =
⟪s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1, EuclideanSpace.single v 1⟫_ℝ d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) xhdi':(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u) =
s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1⊢ ⟪(f₀' (⟪x, s.unit⟫_ℝ - c * t)) (s.unit.val u), (fderiv ℝ (fun x' => EuclideanSpace.single v 1) x) (Space.basis u)⟫_ℝ +
⟪(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u),
EuclideanSpace.single v 1⟫_ℝ =
⟪s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1, EuclideanSpace.single v 1⟫_ℝhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => EuclideanSpace.single v 1) x
change (fderiv ℝ ((fun x' => f₀' x' (s.unit u)) ∘
fun x' => (inner ℝ x' s.unit - c * t)) x) (Space.basis u) = _ d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ (fderiv ℝ ((fun x' => (f₀' x') (s.unit.val u)) ∘ fun x' => ⟪x', s.unit⟫_ℝ - c * t) x) (Space.basis u) =
s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1 d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) xhdi':(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u) =
s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1⊢ ⟪(f₀' (⟪x, s.unit⟫_ℝ - c * t)) (s.unit.val u), (fderiv ℝ (fun x' => EuclideanSpace.single v 1) x) (Space.basis u)⟫_ℝ +
⟪(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u),
EuclideanSpace.single v 1⟫_ℝ =
⟪s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1, EuclideanSpace.single v 1⟫_ℝhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => EuclideanSpace.single v 1) x
rw [fderiv_comp, d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ (fderiv ℝ (fun x' => (f₀' x') (s.unit.val u)) (⟪x, s.unit⟫_ℝ - c * t) ∘SL fderiv ℝ (fun x' => ⟪x', s.unit⟫_ℝ - c * t) x)
(Space.basis u) =
s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1hg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' x') (s.unit.val u)) (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ - c * t) x d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ (fderiv ℝ (fun x' => (f₀' x') (s.unit.val u)) (⟪x, s.unit⟫_ℝ - c * t) ∘SL
(fderiv ℝ (fun x' => ⟪x', s.unit⟫_ℝ) x - fderiv ℝ (fun x' => c * t) x))
(Space.basis u) =
s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => c * t) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' x') (s.unit.val u)) (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ - c * t) x d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) xhdi':(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u) =
s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1⊢ ⟪(f₀' (⟪x, s.unit⟫_ℝ - c * t)) (s.unit.val u), (fderiv ℝ (fun x' => EuclideanSpace.single v 1) x) (Space.basis u)⟫_ℝ +
⟪(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u),
EuclideanSpace.single v 1⟫_ℝ =
⟪s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1, EuclideanSpace.single v 1⟫_ℝhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => EuclideanSpace.single v 1) x fderiv_fun_sub d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ (fderiv ℝ (fun x' => (f₀' x') (s.unit.val u)) (⟪x, s.unit⟫_ℝ - c * t) ∘SL
(fderiv ℝ (fun x' => ⟪x', s.unit⟫_ℝ) x - fderiv ℝ (fun x' => c * t) x))
(Space.basis u) =
s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => c * t) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' x') (s.unit.val u)) (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ - c * t) x d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ (fderiv ℝ (fun x' => (f₀' x') (s.unit.val u)) (⟪x, s.unit⟫_ℝ - c * t) ∘SL
(fderiv ℝ (fun x' => ⟪x', s.unit⟫_ℝ) x - fderiv ℝ (fun x' => c * t) x))
(Space.basis u) =
s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => c * t) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' x') (s.unit.val u)) (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ - c * t) x d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) xhdi':(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u) =
s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1⊢ ⟪(f₀' (⟪x, s.unit⟫_ℝ - c * t)) (s.unit.val u), (fderiv ℝ (fun x' => EuclideanSpace.single v 1) x) (Space.basis u)⟫_ℝ +
⟪(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u),
EuclideanSpace.single v 1⟫_ℝ =
⟪s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1, EuclideanSpace.single v 1⟫_ℝhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => EuclideanSpace.single v 1) x] d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ (fderiv ℝ (fun x' => (f₀' x') (s.unit.val u)) (⟪x, s.unit⟫_ℝ - c * t) ∘SL
(fderiv ℝ (fun x' => ⟪x', s.unit⟫_ℝ) x - fderiv ℝ (fun x' => c * t) x))
(Space.basis u) =
s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => c * t) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' x') (s.unit.val u)) (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ - c * t) x d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) xhdi':(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u) =
s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1⊢ ⟪(f₀' (⟪x, s.unit⟫_ℝ - c * t)) (s.unit.val u), (fderiv ℝ (fun x' => EuclideanSpace.single v 1) x) (Space.basis u)⟫_ℝ +
⟪(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u),
EuclideanSpace.single v 1⟫_ℝ =
⟪s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1, EuclideanSpace.single v 1⟫_ℝhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => EuclideanSpace.single v 1) x
simp only [fderiv_fun_const, Pi.ofNat_apply, sub_zero, ContinuousLinearMap.coe_comp,
Function.comp_apply] d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ (fderiv ℝ (fun x' => (f₀' x') (s.unit.val u)) (⟪x, s.unit⟫_ℝ - c * t))
((fderiv ℝ (fun x' => ⟪x', s.unit⟫_ℝ) x) (Space.basis u)) =
s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => c * t) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' x') (s.unit.val u)) (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ - c * t) x d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) xhdi':(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u) =
s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1⊢ ⟪(f₀' (⟪x, s.unit⟫_ℝ - c * t)) (s.unit.val u), (fderiv ℝ (fun x' => EuclideanSpace.single v 1) x) (Space.basis u)⟫_ℝ +
⟪(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u),
EuclideanSpace.single v 1⟫_ℝ =
⟪s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1, EuclideanSpace.single v 1⟫_ℝhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => EuclideanSpace.single v 1) x
rw [fderiv_inner_apply d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ (fderiv ℝ (fun x' => (f₀' x') (s.unit.val u)) (⟪x, s.unit⟫_ℝ - c * t))
(⟪x, (fderiv ℝ (fun x' => s.unit) x) (Space.basis u)⟫_ℝ + ⟪(fderiv ℝ (fun x' => x') x) (Space.basis u), s.unit⟫_ℝ) =
s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => x') xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => s.unit) xhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => c * t) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' x') (s.unit.val u)) (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ - c * t) x d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ (fderiv ℝ (fun x' => (f₀' x') (s.unit.val u)) (⟪x, s.unit⟫_ℝ - c * t))
(⟪x, (fderiv ℝ (fun x' => s.unit) x) (Space.basis u)⟫_ℝ + ⟪(fderiv ℝ (fun x' => x') x) (Space.basis u), s.unit⟫_ℝ) =
s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => x') xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => s.unit) xhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => c * t) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' x') (s.unit.val u)) (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ - c * t) x d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) xhdi':(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u) =
s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1⊢ ⟪(f₀' (⟪x, s.unit⟫_ℝ - c * t)) (s.unit.val u), (fderiv ℝ (fun x' => EuclideanSpace.single v 1) x) (Space.basis u)⟫_ℝ +
⟪(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u),
EuclideanSpace.single v 1⟫_ℝ =
⟪s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1, EuclideanSpace.single v 1⟫_ℝhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => EuclideanSpace.single v 1) x] d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ (fderiv ℝ (fun x' => (f₀' x') (s.unit.val u)) (⟪x, s.unit⟫_ℝ - c * t))
(⟪x, (fderiv ℝ (fun x' => s.unit) x) (Space.basis u)⟫_ℝ + ⟪(fderiv ℝ (fun x' => x') x) (Space.basis u), s.unit⟫_ℝ) =
s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => x') xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => s.unit) xhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => c * t) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' x') (s.unit.val u)) (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ - c * t) x d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) xhdi':(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u) =
s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1⊢ ⟪(f₀' (⟪x, s.unit⟫_ℝ - c * t)) (s.unit.val u), (fderiv ℝ (fun x' => EuclideanSpace.single v 1) x) (Space.basis u)⟫_ℝ +
⟪(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u),
EuclideanSpace.single v 1⟫_ℝ =
⟪s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1, EuclideanSpace.single v 1⟫_ℝhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => EuclideanSpace.single v 1) x
simp only [fderiv_fun_id, ContinuousLinearMap.coe_id', id_eq] d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ (fderiv ℝ (fun x' => (f₀' x') (s.unit.val u)) (⟪x, s.unit⟫_ℝ - c * t))
(⟪x, (fderiv ℝ (fun x' => s.unit) x) (Space.basis u)⟫_ℝ + ⟪Space.basis u, s.unit⟫_ℝ) =
s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => x') xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => s.unit) xhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => c * t) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' x') (s.unit.val u)) (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ - c * t) x d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) xhdi':(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u) =
s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1⊢ ⟪(f₀' (⟪x, s.unit⟫_ℝ - c * t)) (s.unit.val u), (fderiv ℝ (fun x' => EuclideanSpace.single v 1) x) (Space.basis u)⟫_ℝ +
⟪(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u),
EuclideanSpace.single v 1⟫_ℝ =
⟪s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1, EuclideanSpace.single v 1⟫_ℝhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => EuclideanSpace.single v 1) x
trans (fderiv ℝ (fun x' => (f₀' x') (s.unit u • 1)) (inner ℝ x s.unit - c * t)) (s.unit u • 1) d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ (fderiv ℝ (fun x' => (f₀' x') (s.unit.val u)) (⟪x, s.unit⟫_ℝ - c * t))
(⟪x, (fderiv ℝ (fun x' => s.unit) x) (Space.basis u)⟫_ℝ + ⟪Space.basis u, s.unit⟫_ℝ) =
(fderiv ℝ (fun x' => (f₀' x') (s.unit.val u • 1)) (⟪x, s.unit⟫_ℝ - c * t)) (s.unit.val u • 1)d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ (fderiv ℝ (fun x' => (f₀' x') (s.unit.val u • 1)) (⟪x, s.unit⟫_ℝ - c * t)) (s.unit.val u • 1) =
s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => x') xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => s.unit) xhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => c * t) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' x') (s.unit.val u)) (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ - c * t) x d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) xhdi':(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u) =
s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1⊢ ⟪(f₀' (⟪x, s.unit⟫_ℝ - c * t)) (s.unit.val u), (fderiv ℝ (fun x' => EuclideanSpace.single v 1) x) (Space.basis u)⟫_ℝ +
⟪(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u),
EuclideanSpace.single v 1⟫_ℝ =
⟪s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1, EuclideanSpace.single v 1⟫_ℝhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => EuclideanSpace.single v 1) x
simp only [fderiv_fun_const, Pi.ofNat_apply, _root_.zero_apply, inner_zero_right,
basis_inner, zero_add, fderiv_eq_smul_deriv, smul_eq_mul, mul_one] d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ (fderiv ℝ (fun x' => (f₀' x') (s.unit.val u • 1)) (⟪x, s.unit⟫_ℝ - c * t)) (s.unit.val u • 1) =
s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => x') xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => s.unit) xhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => c * t) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' x') (s.unit.val u)) (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ - c * t) x d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) xhdi':(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u) =
s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1⊢ ⟪(f₀' (⟪x, s.unit⟫_ℝ - c * t)) (s.unit.val u), (fderiv ℝ (fun x' => EuclideanSpace.single v 1) x) (Space.basis u)⟫_ℝ +
⟪(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u),
EuclideanSpace.single v 1⟫_ℝ =
⟪s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1, EuclideanSpace.single v 1⟫_ℝhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => EuclideanSpace.single v 1) x
conv_lhs =>
enter [1, 2, x'] d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) xx':ℝ| (f₀' x') (s.unit.val u • 1) d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) xhdi':(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u) =
s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1⊢ ⟪(f₀' (⟪x, s.unit⟫_ℝ - c * t)) (s.unit.val u), (fderiv ℝ (fun x' => EuclideanSpace.single v 1) x) (Space.basis u)⟫_ℝ +
⟪(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u),
EuclideanSpace.single v 1⟫_ℝ =
⟪s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1, EuclideanSpace.single v 1⟫_ℝhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => EuclideanSpace.single v 1) x
rw [ContinuousLinearMap.map_smul] d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) xx':ℝ| s.unit.val u • (f₀' x') 1 d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) xhdi':(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u) =
s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1⊢ ⟪(f₀' (⟪x, s.unit⟫_ℝ - c * t)) (s.unit.val u), (fderiv ℝ (fun x' => EuclideanSpace.single v 1) x) (Space.basis u)⟫_ℝ +
⟪(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u),
EuclideanSpace.single v 1⟫_ℝ =
⟪s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1, EuclideanSpace.single v 1⟫_ℝhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => EuclideanSpace.single v 1) x
rw [ContinuousLinearMap.map_smul, d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ s.unit.val u • (fderiv ℝ (fun x' => s.unit.val u • (f₀' x') 1) (⟪x, s.unit⟫_ℝ - c * t)) 1 =
s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => x') xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => s.unit) xhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => c * t) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' x') (s.unit.val u)) (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ - c * t) x d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ s.unit.val u • (s.unit.val u • fderiv ℝ (fun x' => (f₀' x') 1) (⟪x, s.unit⟫_ℝ - c * t)) 1 =
(s.unit.val u * s.unit.val u) • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1h d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' x') 1) (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => x') xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => s.unit) xhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => c * t) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' x') (s.unit.val u)) (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ - c * t) x d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) xhdi':(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u) =
s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1⊢ ⟪(f₀' (⟪x, s.unit⟫_ℝ - c * t)) (s.unit.val u), (fderiv ℝ (fun x' => EuclideanSpace.single v 1) x) (Space.basis u)⟫_ℝ +
⟪(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u),
EuclideanSpace.single v 1⟫_ℝ =
⟪s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1, EuclideanSpace.single v 1⟫_ℝhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => EuclideanSpace.single v 1) x fderiv_fun_const_smul, d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ s.unit.val u • (s.unit.val u • fderiv ℝ (fun x' => (f₀' x') 1) (⟪x, s.unit⟫_ℝ - c * t)) 1 =
s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1h d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' x') 1) (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => x') xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => s.unit) xhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => c * t) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' x') (s.unit.val u)) (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ - c * t) x d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ s.unit.val u • (s.unit.val u • fderiv ℝ (fun x' => (f₀' x') 1) (⟪x, s.unit⟫_ℝ - c * t)) 1 =
(s.unit.val u * s.unit.val u) • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1h d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' x') 1) (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => x') xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => s.unit) xhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => c * t) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' x') (s.unit.val u)) (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ - c * t) x d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) xhdi':(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u) =
s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1⊢ ⟪(f₀' (⟪x, s.unit⟫_ℝ - c * t)) (s.unit.val u), (fderiv ℝ (fun x' => EuclideanSpace.single v 1) x) (Space.basis u)⟫_ℝ +
⟪(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u),
EuclideanSpace.single v 1⟫_ℝ =
⟪s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1, EuclideanSpace.single v 1⟫_ℝhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => EuclideanSpace.single v 1) x pow_two d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ s.unit.val u • (s.unit.val u • fderiv ℝ (fun x' => (f₀' x') 1) (⟪x, s.unit⟫_ℝ - c * t)) 1 =
(s.unit.val u * s.unit.val u) • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1h d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' x') 1) (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => x') xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => s.unit) xhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => c * t) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' x') (s.unit.val u)) (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ - c * t) x d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ s.unit.val u • (s.unit.val u • fderiv ℝ (fun x' => (f₀' x') 1) (⟪x, s.unit⟫_ℝ - c * t)) 1 =
(s.unit.val u * s.unit.val u) • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1h d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' x') 1) (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => x') xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => s.unit) xhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => c * t) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' x') (s.unit.val u)) (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ - c * t) x d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) xhdi':(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u) =
s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1⊢ ⟪(f₀' (⟪x, s.unit⟫_ℝ - c * t)) (s.unit.val u), (fderiv ℝ (fun x' => EuclideanSpace.single v 1) x) (Space.basis u)⟫_ℝ +
⟪(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u),
EuclideanSpace.single v 1⟫_ℝ =
⟪s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1, EuclideanSpace.single v 1⟫_ℝhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => EuclideanSpace.single v 1) x] d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ s.unit.val u • (s.unit.val u • fderiv ℝ (fun x' => (f₀' x') 1) (⟪x, s.unit⟫_ℝ - c * t)) 1 =
(s.unit.val u * s.unit.val u) • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1h d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' x') 1) (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => x') xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => s.unit) xhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => c * t) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' x') (s.unit.val u)) (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ - c * t) x d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) xhdi':(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u) =
s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1⊢ ⟪(f₀' (⟪x, s.unit⟫_ℝ - c * t)) (s.unit.val u), (fderiv ℝ (fun x' => EuclideanSpace.single v 1) x) (Space.basis u)⟫_ℝ +
⟪(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u),
EuclideanSpace.single v 1⟫_ℝ =
⟪s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1, EuclideanSpace.single v 1⟫_ℝhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => EuclideanSpace.single v 1) x
rw [HasFDerivAt.fderiv (h'' (inner ℝ x s.unit - c * t)) d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ s.unit.val u • (s.unit.val u • f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1 =
(s.unit.val u * s.unit.val u) • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1h d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' x') 1) (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => x') xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => s.unit) xhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => c * t) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' x') (s.unit.val u)) (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ - c * t) x d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ s.unit.val u • (s.unit.val u • f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1 =
(s.unit.val u * s.unit.val u) • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1h d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' x') 1) (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => x') xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => s.unit) xhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => c * t) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' x') (s.unit.val u)) (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ - c * t) x d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) xhdi':(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u) =
s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1⊢ ⟪(f₀' (⟪x, s.unit⟫_ℝ - c * t)) (s.unit.val u), (fderiv ℝ (fun x' => EuclideanSpace.single v 1) x) (Space.basis u)⟫_ℝ +
⟪(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u),
EuclideanSpace.single v 1⟫_ℝ =
⟪s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1, EuclideanSpace.single v 1⟫_ℝhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => EuclideanSpace.single v 1) x] d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ s.unit.val u • (s.unit.val u • f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1 =
(s.unit.val u * s.unit.val u) • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1h d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' x') 1) (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => x') xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => s.unit) xhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => c * t) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' x') (s.unit.val u)) (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ - c * t) x d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) xhdi':(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u) =
s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1⊢ ⟪(f₀' (⟪x, s.unit⟫_ℝ - c * t)) (s.unit.val u), (fderiv ℝ (fun x' => EuclideanSpace.single v 1) x) (Space.basis u)⟫_ℝ +
⟪(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u),
EuclideanSpace.single v 1⟫_ℝ =
⟪s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1, EuclideanSpace.single v 1⟫_ℝhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => EuclideanSpace.single v 1) x
change s.unit u • s.unit u • (f₀'' (inner ℝ x s.unit - c * t) 1) = _ d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ s.unit.val u • s.unit.val u • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1 =
(s.unit.val u * s.unit.val u) • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1h d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' x') 1) (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => x') xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => s.unit) xhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => c * t) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' x') (s.unit.val u)) (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ - c * t) x d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) xhdi':(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u) =
s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1⊢ ⟪(f₀' (⟪x, s.unit⟫_ℝ - c * t)) (s.unit.val u), (fderiv ℝ (fun x' => EuclideanSpace.single v 1) x) (Space.basis u)⟫_ℝ +
⟪(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u),
EuclideanSpace.single v 1⟫_ℝ =
⟪s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1, EuclideanSpace.single v 1⟫_ℝhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => EuclideanSpace.single v 1) x
rw [← smul_assoc, d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ (s.unit.val u • s.unit.val u) • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1 =
(s.unit.val u * s.unit.val u) • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1h d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' x') 1) (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => x') xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => s.unit) xhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => c * t) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' x') (s.unit.val u)) (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ - c * t) x h d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' x') 1) (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => x') xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => s.unit) xhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => c * t) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' x') (s.unit.val u)) (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ - c * t) x d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) xhdi':(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u) =
s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1⊢ ⟪(f₀' (⟪x, s.unit⟫_ℝ - c * t)) (s.unit.val u), (fderiv ℝ (fun x' => EuclideanSpace.single v 1) x) (Space.basis u)⟫_ℝ +
⟪(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u),
EuclideanSpace.single v 1⟫_ℝ =
⟪s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1, EuclideanSpace.single v 1⟫_ℝhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => EuclideanSpace.single v 1) x smul_eq_mul d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ (s.unit.val u * s.unit.val u) • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1 =
(s.unit.val u * s.unit.val u) • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1h d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' x') 1) (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => x') xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => s.unit) xhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => c * t) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' x') (s.unit.val u)) (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ - c * t) xh d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' x') 1) (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => x') xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => s.unit) xhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => c * t) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' x') (s.unit.val u)) (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ - c * t) x d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) xhdi':(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u) =
s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1⊢ ⟪(f₀' (⟪x, s.unit⟫_ℝ - c * t)) (s.unit.val u), (fderiv ℝ (fun x' => EuclideanSpace.single v 1) x) (Space.basis u)⟫_ℝ +
⟪(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u),
EuclideanSpace.single v 1⟫_ℝ =
⟪s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1, EuclideanSpace.single v 1⟫_ℝhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => EuclideanSpace.single v 1) x]h d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' x') 1) (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => x') xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => s.unit) xhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => c * t) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' x') (s.unit.val u)) (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ - c * t) x d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) xhdi':(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u) =
s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1⊢ ⟪(f₀' (⟪x, s.unit⟫_ℝ - c * t)) (s.unit.val u), (fderiv ℝ (fun x' => EuclideanSpace.single v 1) x) (Space.basis u)⟫_ℝ +
⟪(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u),
EuclideanSpace.single v 1⟫_ℝ =
⟪s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1, EuclideanSpace.single v 1⟫_ℝhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => EuclideanSpace.single v 1) x
repeat fun_prop hg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' x') (s.unit.val u)) (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ - c * t) x d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) xhdi':(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u) =
s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1⊢ ⟪(f₀' (⟪x, s.unit⟫_ℝ - c * t)) (s.unit.val u), (fderiv ℝ (fun x' => EuclideanSpace.single v 1) x) (Space.basis u)⟫_ℝ +
⟪(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u),
EuclideanSpace.single v 1⟫_ℝ =
⟪s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1, EuclideanSpace.single v 1⟫_ℝhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => EuclideanSpace.single v 1) x
· hg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' x') (s.unit.val u)) (⟪x, s.unit⟫_ℝ - c * t) d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) xhdi':(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u) =
s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1⊢ ⟪(f₀' (⟪x, s.unit⟫_ℝ - c * t)) (s.unit.val u), (fderiv ℝ (fun x' => EuclideanSpace.single v 1) x) (Space.basis u)⟫_ℝ +
⟪(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u),
EuclideanSpace.single v 1⟫_ℝ =
⟪s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1, EuclideanSpace.single v 1⟫_ℝhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => EuclideanSpace.single v 1) x conv_lhs =>
enter [x] d:ℕc:ℝt:ℝx✝:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) xx:ℝ| (f₀' x) (s.unit.val u) d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) xhdi':(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u) =
s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1⊢ ⟪(f₀' (⟪x, s.unit⟫_ℝ - c * t)) (s.unit.val u), (fderiv ℝ (fun x' => EuclideanSpace.single v 1) x) (Space.basis u)⟫_ℝ +
⟪(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u),
EuclideanSpace.single v 1⟫_ℝ =
⟪s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1, EuclideanSpace.single v 1⟫_ℝhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => EuclideanSpace.single v 1) x
rw [← mul_one (s.unit u), ← smul_eq_mul, ContinuousLinearMap.map_smul] d:ℕc:ℝt:ℝx✝:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) xx:ℝ| s.unit.val u • (f₀' x) 1 d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) xhdi':(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u) =
s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1⊢ ⟪(f₀' (⟪x, s.unit⟫_ℝ - c * t)) (s.unit.val u), (fderiv ℝ (fun x' => EuclideanSpace.single v 1) x) (Space.basis u)⟫_ℝ +
⟪(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u),
EuclideanSpace.single v 1⟫_ℝ =
⟪s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1, EuclideanSpace.single v 1⟫_ℝhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => EuclideanSpace.single v 1) x
fun_prop All goals completed! 🐙 d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) xhdi':(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u) =
s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1⊢ ⟪(f₀' (⟪x, s.unit⟫_ℝ - c * t)) (s.unit.val u), (fderiv ℝ (fun x' => EuclideanSpace.single v 1) x) (Space.basis u)⟫_ℝ +
⟪(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u),
EuclideanSpace.single v 1⟫_ℝ =
⟪s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1, EuclideanSpace.single v 1⟫_ℝhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => EuclideanSpace.single v 1) x
· hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ - c * t) x d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) xhdi':(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u) =
s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1⊢ ⟪(f₀' (⟪x, s.unit⟫_ℝ - c * t)) (s.unit.val u), (fderiv ℝ (fun x' => EuclideanSpace.single v 1) x) (Space.basis u)⟫_ℝ +
⟪(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u),
EuclideanSpace.single v 1⟫_ℝ =
⟪s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1, EuclideanSpace.single v 1⟫_ℝhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => EuclideanSpace.single v 1) x exact wave_differentiable d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) xhdi':(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u) =
s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1⊢ ⟪(f₀' (⟪x, s.unit⟫_ℝ - c * t)) (s.unit.val u), (fderiv ℝ (fun x' => EuclideanSpace.single v 1) x) (Space.basis u)⟫_ℝ +
⟪(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u),
EuclideanSpace.single v 1⟫_ℝ =
⟪s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1, EuclideanSpace.single v 1⟫_ℝhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => EuclideanSpace.single v 1) x d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) xhdi':(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u) =
s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1⊢ ⟪(f₀' (⟪x, s.unit⟫_ℝ - c * t)) (s.unit.val u), (fderiv ℝ (fun x' => EuclideanSpace.single v 1) x) (Space.basis u)⟫_ℝ +
⟪(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u),
EuclideanSpace.single v 1⟫_ℝ =
⟪s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1, EuclideanSpace.single v 1⟫_ℝhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => EuclideanSpace.single v 1) x
rw [hdi' d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) xhdi':(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u) =
s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1⊢ ⟪(f₀' (⟪x, s.unit⟫_ℝ - c * t)) (s.unit.val u), (fderiv ℝ (fun x' => EuclideanSpace.single v 1) x) (Space.basis u)⟫_ℝ +
⟪s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1, EuclideanSpace.single v 1⟫_ℝ =
⟪s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1, EuclideanSpace.single v 1⟫_ℝhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => EuclideanSpace.single v 1) x d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) xhdi':(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u) =
s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1⊢ ⟪(f₀' (⟪x, s.unit⟫_ℝ - c * t)) (s.unit.val u), (fderiv ℝ (fun x' => EuclideanSpace.single v 1) x) (Space.basis u)⟫_ℝ +
⟪s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1, EuclideanSpace.single v 1⟫_ℝ =
⟪s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1, EuclideanSpace.single v 1⟫_ℝhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => EuclideanSpace.single v 1) x] d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) xhdi':(fderiv ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) x) (Space.basis u) =
s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1⊢ ⟪(f₀' (⟪x, s.unit⟫_ℝ - c * t)) (s.unit.val u), (fderiv ℝ (fun x' => EuclideanSpace.single v 1) x) (Space.basis u)⟫_ℝ +
⟪s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1, EuclideanSpace.single v 1⟫_ℝ =
⟪s.unit.val u ^ 2 • (f₀'' (⟪x, s.unit⟫_ℝ - c * t)) 1, EuclideanSpace.single v 1⟫_ℝhf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => EuclideanSpace.single v 1) x
simp only [PiLp.inner_apply, fderiv_fun_const, Pi.zero_apply,
_root_.zero_apply, inner_zero_right, PiLp.smul_apply, smul_eq_mul,
PiLp.single_apply, zero_add] hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' (⟪x', s.unit⟫_ℝ - c * t)) (s.unit.val u)) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => EuclideanSpace.single v 1) x
change DifferentiableAt ℝ ((fun x' => f₀' x' (s.unit u)) ∘
(fun x => (inner ℝ x s.unit - c * t))) x hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ ((fun x' => (f₀' x') (s.unit.val u)) ∘ fun x => ⟪x, s.unit⟫_ℝ - c * t) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => EuclideanSpace.single v 1) x
apply DifferentiableAt.comp hf.hg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' x') (s.unit.val u)) (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ - c * t) xhg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => EuclideanSpace.single v 1) x
· hf.hg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => (f₀' x') (s.unit.val u)) (⟪x, s.unit⟫_ℝ - c * t) conv_lhs =>
enter [x] d:ℕc:ℝt:ℝx✝:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) xx:ℝ| (f₀' x) (s.unit.val u)
rw [← mul_one (s.unit u), ← smul_eq_mul, ContinuousLinearMap.map_smul] d:ℕc:ℝt:ℝx✝:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) xx:ℝ| s.unit.val u • (f₀' x) 1
fun_prop All goals completed! 🐙
· hf d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => ⟪x', s.unit⟫_ℝ - c * t) x exact wave_differentiable All goals completed! 🐙
· hg d:ℕc:ℝt:ℝx:Space du:Fin dv:Fin ds:Direction df₀':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)f₀'':ℝ → ℝ →L[ℝ] EuclideanSpace ℝ (Fin d)h'':∀ (x : ℝ), HasFDerivAt (fun x' => (f₀' x') 1) (f₀'' x) x⊢ DifferentiableAt ℝ (fun x' => EuclideanSpace.single v 1) x fun_prop All goals completed! 🐙
If f₀ is a function of (inner ℝ x s - c * t), the fderiv of its components
with respect to spatial coordinates is equal to the corresponding component of
the propagation direction s times time derivative.
lemma space_fderiv_of_inner_product_wave_eq_space_fderiv
{t : Time} {f₀ : ℝ → EuclideanSpace ℝ (Fin d)}
{s : Direction d} {u v : Fin d} (h' : Differentiable ℝ f₀) :
c * ((fun x' => (fderiv ℝ (fun x => inner ℝ (f₀ (inner ℝ x s.unit - c * t))
(EuclideanSpace.single v 1)) x') ((Space.basis u))) x)
=
- s.unit u * ∂ₜ (fun t => f₀ (inner ℝ x s.unit - c * t)) t v := by d:ℕc:ℝx:Space dt:Timef₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction du:Fin dv:Fin dh':Differentiable ℝ f₀⊢ c *
(fun x' => (fderiv ℝ (fun x => ⟪f₀ (⟪x, s.unit⟫_ℝ - c * t.val), EuclideanSpace.single v 1⟫_ℝ) x') (Space.basis u))
x =
-s.unit.val u * (∂ₜ (fun t => f₀ (⟪x, s.unit⟫_ℝ - c * t.val)) t).ofLp v
simp [EuclideanSpace.inner_single_right] d:ℕc:ℝx:Space dt:Timef₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction du:Fin dv:Fin dh':Differentiable ℝ f₀⊢ c * (fderiv ℝ (fun x => (f₀ (⟪x, s.unit⟫_ℝ - c * t.val)).ofLp v) x) (Space.basis u) =
-(s.unit.val u * (∂ₜ (fun t => f₀ (⟪x, s.unit⟫_ℝ - c * t.val)) t).ofLp v)
trans c * (fderiv ℝ (fun x => f₀ (⟪x, s.unit⟫_ℝ - c * t.val) v) x) (Space.basis u) d:ℕc:ℝx:Space dt:Timef₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction du:Fin dv:Fin dh':Differentiable ℝ f₀⊢ c * (fderiv ℝ (fun x => (f₀ (⟪x, s.unit⟫_ℝ - c * t.val)).ofLp v) x) (Space.basis u) =
c * (fderiv ℝ (fun x => (f₀ (⟪x, s.unit⟫_ℝ - c * t.val)).ofLp v) x) (Space.basis u)d:ℕc:ℝx:Space dt:Timef₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction du:Fin dv:Fin dh':Differentiable ℝ f₀⊢ c * (fderiv ℝ (fun x => (f₀ (⟪x, s.unit⟫_ℝ - c * t.val)).ofLp v) x) (Space.basis u) =
-(s.unit.val u * (∂ₜ (fun t => f₀ (⟪x, s.unit⟫_ℝ - c * t.val)) t).ofLp v)
· d:ℕc:ℝx:Space dt:Timef₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction du:Fin dv:Fin dh':Differentiable ℝ f₀⊢ c * (fderiv ℝ (fun x => (f₀ (⟪x, s.unit⟫_ℝ - c * t.val)).ofLp v) x) (Space.basis u) =
c * (fderiv ℝ (fun x => (f₀ (⟪x, s.unit⟫_ℝ - c * t.val)).ofLp v) x) (Space.basis u) rfl All goals completed! 🐙
erw [← Space.deriv_eq_fderiv_basis, d:ℕc:ℝx:Space dt:Timef₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction du:Fin dv:Fin dh':Differentiable ℝ f₀⊢ c * Space.deriv u (fun x => (f₀ (⟪x, s.unit⟫_ℝ - c * t.val)).ofLp v) x =
-(s.unit.val u * (∂ₜ (fun t => f₀ (⟪x, s.unit⟫_ℝ - c * t.val)) t).ofLp v) planeWave_apply_space_deriv h' u v, d:ℕc:ℝx:Space dt:Timef₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction du:Fin dv:Fin dh':Differentiable ℝ f₀⊢ c * (s.unit.val u • fun x => (planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x).ofLp v) x =
-(s.unit.val u * (∂ₜ (fun t => f₀ (⟪x, s.unit⟫_ℝ - c * t.val)) t).ofLp v)
planeWave_time_deriv h' d:ℕc:ℝx:Space dt:Timef₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction du:Fin dv:Fin dh':Differentiable ℝ f₀⊢ c * (s.unit.val u • fun x => (planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x).ofLp v) x =
-(s.unit.val u * ((-c • fun t => planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x) t).ofLp v)] d:ℕc:ℝx:Space dt:Timef₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction du:Fin dv:Fin dh':Differentiable ℝ f₀⊢ c * (s.unit.val u • fun x => (planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x).ofLp v) x =
-(s.unit.val u * ((-c • fun t => planeWave (fun x => (fderiv ℝ f₀ x) 1) c s t x) t).ofLp v)
simp only [fderiv_eq_smul_deriv, one_smul, Pi.smul_apply, smul_eq_mul, PiLp.smul_apply, neg_mul,
mul_neg, neg_neg] d:ℕc:ℝx:Space dt:Timef₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction du:Fin dv:Fin dh':Differentiable ℝ f₀⊢ c * (s.unit.val u * (planeWave (fun x => _root_.deriv f₀ x) c s t x).ofLp v) =
s.unit.val u * (c * (planeWave (fun x => _root_.deriv f₀ x) c s t x).ofLp v)
ring All goals completed! 🐙
lemma time_differentiable_of_eq_planewave {s : Direction d}
{f₀ : ℝ → EuclideanSpace ℝ (Fin d)} {f : Time → Space d → EuclideanSpace ℝ (Fin d)}
(h' : Differentiable ℝ f₀) (hf : f = planeWave f₀ c s) :
Differentiable ℝ fun t => f t x := by d:ℕc:ℝx:Space ds:Direction df₀:ℝ → EuclideanSpace ℝ (Fin d)f:Time → Space d → EuclideanSpace ℝ (Fin d)h':Differentiable ℝ f₀hf:f = planeWave f₀ c s⊢ Differentiable ℝ fun t => f t x
rw [hf d:ℕc:ℝx:Space ds:Direction df₀:ℝ → EuclideanSpace ℝ (Fin d)f:Time → Space d → EuclideanSpace ℝ (Fin d)h':Differentiable ℝ f₀hf:f = planeWave f₀ c s⊢ Differentiable ℝ fun t => planeWave f₀ c s t x d:ℕc:ℝx:Space ds:Direction df₀:ℝ → EuclideanSpace ℝ (Fin d)f:Time → Space d → EuclideanSpace ℝ (Fin d)h':Differentiable ℝ f₀hf:f = planeWave f₀ c s⊢ Differentiable ℝ fun t => planeWave f₀ c s t x] d:ℕc:ℝx:Space ds:Direction df₀:ℝ → EuclideanSpace ℝ (Fin d)f:Time → Space d → EuclideanSpace ℝ (Fin d)h':Differentiable ℝ f₀hf:f = planeWave f₀ c s⊢ Differentiable ℝ fun t => planeWave f₀ c s t x
unfold planeWave d:ℕc:ℝx:Space ds:Direction df₀:ℝ → EuclideanSpace ℝ (Fin d)f:Time → Space d → EuclideanSpace ℝ (Fin d)h':Differentiable ℝ f₀hf:f = planeWave f₀ c s⊢ Differentiable ℝ fun t => f₀ (⟪x, s.unit⟫_ℝ - c * t.val)
fun_prop All goals completed! 🐙
lemma crossProduct_time_differentiable_of_right_eq_planewave {s : Direction}
{f₀ : ℝ → EuclideanSpace ℝ (Fin 3)} {f : Time → Space → EuclideanSpace ℝ (Fin 3)}
(h' : Differentiable ℝ f₀) (hf : f = planeWave f₀ c s) :
DifferentiableAt ℝ (fun t => Space.basis.repr s.unit ⨯ₑ₃ (f t x)) t := by c:ℝx:Spacet:Times:Directionf₀:ℝ → EuclideanSpace ℝ (Fin 3)f:Time → Space → EuclideanSpace ℝ (Fin 3)h':Differentiable ℝ f₀hf:f = planeWave f₀ c s⊢ DifferentiableAt ℝ
(fun t =>
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
((crossProduct ((WithLp.equiv 2 (Fin 3 → ℝ)) a)) ((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(Space.basis.repr (s.unit 3)) (f t x))
t
rw [hf, c:ℝx:Spacet:Times:Directionf₀:ℝ → EuclideanSpace ℝ (Fin 3)f:Time → Space → EuclideanSpace ℝ (Fin 3)h':Differentiable ℝ f₀hf:f = planeWave f₀ c s⊢ DifferentiableAt ℝ
(fun t =>
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
((crossProduct ((WithLp.equiv 2 (Fin 3 → ℝ)) a)) ((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(Space.basis.repr (s.unit 3)) (planeWave f₀ c s t x))
t c:ℝx:Spacet:Times:Directionf₀:ℝ → EuclideanSpace ℝ (Fin 3)f:Time → Space → EuclideanSpace ℝ (Fin 3)h':Differentiable ℝ f₀hf:f = planeWave f₀ c s⊢ DifferentiableAt ℝ
(fun t =>
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
(((LinearMap.mk₂ ℝ (fun a b => ![a 1 * b 2 - a 2 * b 1, a 2 * b 0 - a 0 * b 2, a 0 * b 1 - a 1 * b 0]) ⋯ ⋯ ⋯
⋯)
((WithLp.equiv 2 (Fin 3 → ℝ)) a))
((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(Space.basis.repr (s.unit 3)) (planeWave f₀ c s t x))
t crossProduct c:ℝx:Spacet:Times:Directionf₀:ℝ → EuclideanSpace ℝ (Fin 3)f:Time → Space → EuclideanSpace ℝ (Fin 3)h':Differentiable ℝ f₀hf:f = planeWave f₀ c s⊢ DifferentiableAt ℝ
(fun t =>
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
(((LinearMap.mk₂ ℝ (fun a b => ![a 1 * b 2 - a 2 * b 1, a 2 * b 0 - a 0 * b 2, a 0 * b 1 - a 1 * b 0]) ⋯ ⋯ ⋯
⋯)
((WithLp.equiv 2 (Fin 3 → ℝ)) a))
((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(Space.basis.repr (s.unit 3)) (planeWave f₀ c s t x))
t c:ℝx:Spacet:Times:Directionf₀:ℝ → EuclideanSpace ℝ (Fin 3)f:Time → Space → EuclideanSpace ℝ (Fin 3)h':Differentiable ℝ f₀hf:f = planeWave f₀ c s⊢ DifferentiableAt ℝ
(fun t =>
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
(((LinearMap.mk₂ ℝ (fun a b => ![a 1 * b 2 - a 2 * b 1, a 2 * b 0 - a 0 * b 2, a 0 * b 1 - a 1 * b 0]) ⋯ ⋯ ⋯
⋯)
((WithLp.equiv 2 (Fin 3 → ℝ)) a))
((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(Space.basis.repr (s.unit 3)) (planeWave f₀ c s t x))
t] c:ℝx:Spacet:Times:Directionf₀:ℝ → EuclideanSpace ℝ (Fin 3)f:Time → Space → EuclideanSpace ℝ (Fin 3)h':Differentiable ℝ f₀hf:f = planeWave f₀ c s⊢ DifferentiableAt ℝ
(fun t =>
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
(((LinearMap.mk₂ ℝ (fun a b => ![a 1 * b 2 - a 2 * b 1, a 2 * b 0 - a 0 * b 2, a 0 * b 1 - a 1 * b 0]) ⋯ ⋯ ⋯
⋯)
((WithLp.equiv 2 (Fin 3 → ℝ)) a))
((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(Space.basis.repr (s.unit 3)) (planeWave f₀ c s t x))
t
unfold planeWave c:ℝx:Spacet:Times:Directionf₀:ℝ → EuclideanSpace ℝ (Fin 3)f:Time → Space → EuclideanSpace ℝ (Fin 3)h':Differentiable ℝ f₀hf:f = planeWave f₀ c s⊢ DifferentiableAt ℝ
(fun t =>
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
(((LinearMap.mk₂ ℝ (fun a b => ![a 1 * b 2 - a 2 * b 1, a 2 * b 0 - a 0 * b 2, a 0 * b 1 - a 1 * b 0]) ⋯ ⋯ ⋯
⋯)
((WithLp.equiv 2 (Fin 3 → ℝ)) a))
((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(Space.basis.repr (s.unit 3)) (f₀ (⟪x, s.unit 3⟫_ℝ - c * t.val)))
t
apply differentiable_euclid c:ℝx:Spacet:Times:Directionf₀:ℝ → EuclideanSpace ℝ (Fin 3)f:Time → Space → EuclideanSpace ℝ (Fin 3)h':Differentiable ℝ f₀hf:f = planeWave f₀ c s⊢ ∀ (i : Fin 3),
Differentiable ℝ fun t =>
((fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
(((LinearMap.mk₂ ℝ (fun a b => ![a 1 * b 2 - a 2 * b 1, a 2 * b 0 - a 0 * b 2, a 0 * b 1 - a 1 * b 0]) ⋯ ⋯
⋯ ⋯)
((WithLp.equiv 2 (Fin 3 → ℝ)) a))
((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(Space.basis.repr (s.unit 3)) (f₀ (⟪x, s.unit 3⟫_ℝ - c * t.val))).ofLp
i
intro i c:ℝx:Spacet:Times:Directionf₀:ℝ → EuclideanSpace ℝ (Fin 3)f:Time → Space → EuclideanSpace ℝ (Fin 3)h':Differentiable ℝ f₀hf:f = planeWave f₀ c si:Fin 3⊢ Differentiable ℝ fun t =>
((fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
(((LinearMap.mk₂ ℝ (fun a b => ![a 1 * b 2 - a 2 * b 1, a 2 * b 0 - a 0 * b 2, a 0 * b 1 - a 1 * b 0]) ⋯ ⋯ ⋯
⋯)
((WithLp.equiv 2 (Fin 3 → ℝ)) a))
((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(Space.basis.repr (s.unit 3)) (f₀ (⟪x, s.unit 3⟫_ℝ - c * t.val))).ofLp
i
fin_cases i «0» c:ℝx:Spacet:Times:Directionf₀:ℝ → EuclideanSpace ℝ (Fin 3)f:Time → Space → EuclideanSpace ℝ (Fin 3)h':Differentiable ℝ f₀hf:f = planeWave f₀ c s⊢ Differentiable ℝ fun t =>
((fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
(((LinearMap.mk₂ ℝ (fun a b => ![a 1 * b 2 - a 2 * b 1, a 2 * b 0 - a 0 * b 2, a 0 * b 1 - a 1 * b 0]) ⋯ ⋯ ⋯
⋯)
((WithLp.equiv 2 (Fin 3 → ℝ)) a))
((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(Space.basis.repr (s.unit 3)) (f₀ (⟪x, s.unit 3⟫_ℝ - c * t.val))).ofLp
((fun i => i) ⟨0, ⋯⟩)«1» c:ℝx:Spacet:Times:Directionf₀:ℝ → EuclideanSpace ℝ (Fin 3)f:Time → Space → EuclideanSpace ℝ (Fin 3)h':Differentiable ℝ f₀hf:f = planeWave f₀ c s⊢ Differentiable ℝ fun t =>
((fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
(((LinearMap.mk₂ ℝ (fun a b => ![a 1 * b 2 - a 2 * b 1, a 2 * b 0 - a 0 * b 2, a 0 * b 1 - a 1 * b 0]) ⋯ ⋯ ⋯
⋯)
((WithLp.equiv 2 (Fin 3 → ℝ)) a))
((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(Space.basis.repr (s.unit 3)) (f₀ (⟪x, s.unit 3⟫_ℝ - c * t.val))).ofLp
((fun i => i) ⟨1, ⋯⟩)«2» c:ℝx:Spacet:Times:Directionf₀:ℝ → EuclideanSpace ℝ (Fin 3)f:Time → Space → EuclideanSpace ℝ (Fin 3)h':Differentiable ℝ f₀hf:f = planeWave f₀ c s⊢ Differentiable ℝ fun t =>
((fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
(((LinearMap.mk₂ ℝ (fun a b => ![a 1 * b 2 - a 2 * b 1, a 2 * b 0 - a 0 * b 2, a 0 * b 1 - a 1 * b 0]) ⋯ ⋯ ⋯
⋯)
((WithLp.equiv 2 (Fin 3 → ℝ)) a))
((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(Space.basis.repr (s.unit 3)) (f₀ (⟪x, s.unit 3⟫_ℝ - c * t.val))).ofLp
((fun i => i) ⟨2, ⋯⟩) <;> «0» c:ℝx:Spacet:Times:Directionf₀:ℝ → EuclideanSpace ℝ (Fin 3)f:Time → Space → EuclideanSpace ℝ (Fin 3)h':Differentiable ℝ f₀hf:f = planeWave f₀ c s⊢ Differentiable ℝ fun t =>
((fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
(((LinearMap.mk₂ ℝ (fun a b => ![a 1 * b 2 - a 2 * b 1, a 2 * b 0 - a 0 * b 2, a 0 * b 1 - a 1 * b 0]) ⋯ ⋯ ⋯
⋯)
((WithLp.equiv 2 (Fin 3 → ℝ)) a))
((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(Space.basis.repr (s.unit 3)) (f₀ (⟪x, s.unit 3⟫_ℝ - c * t.val))).ofLp
((fun i => i) ⟨0, ⋯⟩)«1» c:ℝx:Spacet:Times:Directionf₀:ℝ → EuclideanSpace ℝ (Fin 3)f:Time → Space → EuclideanSpace ℝ (Fin 3)h':Differentiable ℝ f₀hf:f = planeWave f₀ c s⊢ Differentiable ℝ fun t =>
((fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
(((LinearMap.mk₂ ℝ (fun a b => ![a 1 * b 2 - a 2 * b 1, a 2 * b 0 - a 0 * b 2, a 0 * b 1 - a 1 * b 0]) ⋯ ⋯ ⋯
⋯)
((WithLp.equiv 2 (Fin 3 → ℝ)) a))
((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(Space.basis.repr (s.unit 3)) (f₀ (⟪x, s.unit 3⟫_ℝ - c * t.val))).ofLp
((fun i => i) ⟨1, ⋯⟩)«2» c:ℝx:Spacet:Times:Directionf₀:ℝ → EuclideanSpace ℝ (Fin 3)f:Time → Space → EuclideanSpace ℝ (Fin 3)h':Differentiable ℝ f₀hf:f = planeWave f₀ c s⊢ Differentiable ℝ fun t =>
((fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
(((LinearMap.mk₂ ℝ (fun a b => ![a 1 * b 2 - a 2 * b 1, a 2 * b 0 - a 0 * b 2, a 0 * b 1 - a 1 * b 0]) ⋯ ⋯ ⋯
⋯)
((WithLp.equiv 2 (Fin 3 → ℝ)) a))
((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(Space.basis.repr (s.unit 3)) (f₀ (⟪x, s.unit 3⟫_ℝ - c * t.val))).ofLp
((fun i => i) ⟨2, ⋯⟩)
· «2» c:ℝx:Spacet:Times:Directionf₀:ℝ → EuclideanSpace ℝ (Fin 3)f:Time → Space → EuclideanSpace ℝ (Fin 3)h':Differentiable ℝ f₀hf:f = planeWave f₀ c s⊢ Differentiable ℝ fun t =>
((fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
(((LinearMap.mk₂ ℝ (fun a b => ![a 1 * b 2 - a 2 * b 1, a 2 * b 0 - a 0 * b 2, a 0 * b 1 - a 1 * b 0]) ⋯ ⋯ ⋯
⋯)
((WithLp.equiv 2 (Fin 3 → ℝ)) a))
((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(Space.basis.repr (s.unit 3)) (f₀ (⟪x, s.unit 3⟫_ℝ - c * t.val))).ofLp
((fun i => i) ⟨2, ⋯⟩) simp only [Fin.reduceFinMk, Fin.isValue, Nat.succ_eq_add_one, Nat.reduceAdd,
WithLp.equiv_apply, LinearMap.mk₂_apply, WithLp.equiv_symm_apply, PiLp.toLp_apply, cons_val] «2» c:ℝx:Spacet:Times:Directionf₀:ℝ → EuclideanSpace ℝ (Fin 3)f:Time → Space → EuclideanSpace ℝ (Fin 3)h':Differentiable ℝ f₀hf:f = planeWave f₀ c s⊢ Differentiable ℝ fun t =>
(Space.basis.repr (s.unit 3)).ofLp 0 * (f₀ (⟪x, s.unit 3⟫_ℝ - c * t.val)).ofLp 1 -
(Space.basis.repr (s.unit 3)).ofLp 1 * (f₀ (⟪x, s.unit 3⟫_ℝ - c * t.val)).ofLp 0
fun_prop All goals completed! 🐙
lemma crossProduct_differentiable_of_right_eq_planewave {s : Direction}
{f₀ : ℝ → EuclideanSpace ℝ (Fin 3)} (h' : Differentiable ℝ f₀) :
DifferentiableAt ℝ (fun u => Space.basis.repr s.unit ⨯ₑ₃ (f₀ u)) u := by u:ℝs:Directionf₀:ℝ → EuclideanSpace ℝ (Fin 3)h':Differentiable ℝ f₀⊢ DifferentiableAt ℝ
(fun u =>
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
((crossProduct ((WithLp.equiv 2 (Fin 3 → ℝ)) a)) ((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(Space.basis.repr (s.unit 3)) (f₀ u))
u
rw [crossProduct u:ℝs:Directionf₀:ℝ → EuclideanSpace ℝ (Fin 3)h':Differentiable ℝ f₀⊢ DifferentiableAt ℝ
(fun u =>
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
(((LinearMap.mk₂ ℝ (fun a b => ![a 1 * b 2 - a 2 * b 1, a 2 * b 0 - a 0 * b 2, a 0 * b 1 - a 1 * b 0]) ⋯ ⋯ ⋯
⋯)
((WithLp.equiv 2 (Fin 3 → ℝ)) a))
((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(Space.basis.repr (s.unit 3)) (f₀ u))
u u:ℝs:Directionf₀:ℝ → EuclideanSpace ℝ (Fin 3)h':Differentiable ℝ f₀⊢ DifferentiableAt ℝ
(fun u =>
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
(((LinearMap.mk₂ ℝ (fun a b => ![a 1 * b 2 - a 2 * b 1, a 2 * b 0 - a 0 * b 2, a 0 * b 1 - a 1 * b 0]) ⋯ ⋯ ⋯
⋯)
((WithLp.equiv 2 (Fin 3 → ℝ)) a))
((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(Space.basis.repr (s.unit 3)) (f₀ u))
u] u:ℝs:Directionf₀:ℝ → EuclideanSpace ℝ (Fin 3)h':Differentiable ℝ f₀⊢ DifferentiableAt ℝ
(fun u =>
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
(((LinearMap.mk₂ ℝ (fun a b => ![a 1 * b 2 - a 2 * b 1, a 2 * b 0 - a 0 * b 2, a 0 * b 1 - a 1 * b 0]) ⋯ ⋯ ⋯
⋯)
((WithLp.equiv 2 (Fin 3 → ℝ)) a))
((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(Space.basis.repr (s.unit 3)) (f₀ u))
u
apply Differentiable.differentiableAt u:ℝs:Directionf₀:ℝ → EuclideanSpace ℝ (Fin 3)h':Differentiable ℝ f₀⊢ Differentiable ℝ fun u =>
(fun a b =>
(WithLp.equiv 2 (Fin 3 → ℝ)).symm
(((LinearMap.mk₂ ℝ (fun a b => ![a 1 * b 2 - a 2 * b 1, a 2 * b 0 - a 0 * b 2, a 0 * b 1 - a 1 * b 0]) ⋯ ⋯ ⋯ ⋯)
((WithLp.equiv 2 (Fin 3 → ℝ)) a))
((WithLp.equiv 2 (Fin 3 → ℝ)) b)))
(Space.basis.repr (s.unit 3)) (f₀ u)
apply Differentiable.comp hg u:ℝs:Directionf₀:ℝ → EuclideanSpace ℝ (Fin 3)h':Differentiable ℝ f₀⊢ Differentiable ℝ ⇑(WithLp.equiv 2 (Fin 3 → ℝ)).symmhf u:ℝs:Directionf₀:ℝ → EuclideanSpace ℝ (Fin 3)h':Differentiable ℝ f₀⊢ Differentiable ℝ fun u =>
((LinearMap.mk₂ ℝ (fun a b => ![a 1 * b 2 - a 2 * b 1, a 2 * b 0 - a 0 * b 2, a 0 * b 1 - a 1 * b 0]) ⋯ ⋯ ⋯ ⋯)
((WithLp.equiv 2 (Fin 3 → ℝ)) (Space.basis.repr (s.unit 3))))
((WithLp.equiv 2 (Fin 3 → ℝ)) (f₀ u))
· hg u:ℝs:Directionf₀:ℝ → EuclideanSpace ℝ (Fin 3)h':Differentiable ℝ f₀⊢ Differentiable ℝ ⇑(WithLp.equiv 2 (Fin 3 → ℝ)).symm simp only [WithLp.equiv_symm_apply] hg u:ℝs:Directionf₀:ℝ → EuclideanSpace ℝ (Fin 3)h':Differentiable ℝ f₀⊢ Differentiable ℝ (WithLp.toLp 2)
rw [@differentiable_euclidean hg u:ℝs:Directionf₀:ℝ → EuclideanSpace ℝ (Fin 3)h':Differentiable ℝ f₀⊢ ∀ (i : Fin 3), Differentiable ℝ fun x => (WithLp.toLp 2 x).ofLp i hg u:ℝs:Directionf₀:ℝ → EuclideanSpace ℝ (Fin 3)h':Differentiable ℝ f₀⊢ ∀ (i : Fin 3), Differentiable ℝ fun x => (WithLp.toLp 2 x).ofLp i]hg u:ℝs:Directionf₀:ℝ → EuclideanSpace ℝ (Fin 3)h':Differentiable ℝ f₀⊢ ∀ (i : Fin 3), Differentiable ℝ fun x => (WithLp.toLp 2 x).ofLp i
intro i hg u:ℝs:Directionf₀:ℝ → EuclideanSpace ℝ (Fin 3)h':Differentiable ℝ f₀i:Fin 3⊢ Differentiable ℝ fun x => (WithLp.toLp 2 x).ofLp i
simp only hg u:ℝs:Directionf₀:ℝ → EuclideanSpace ℝ (Fin 3)h':Differentiable ℝ f₀i:Fin 3⊢ Differentiable ℝ fun x => x i
fun_prop All goals completed! 🐙
apply differentiable_pi'' hf u:ℝs:Directionf₀:ℝ → EuclideanSpace ℝ (Fin 3)h':Differentiable ℝ f₀⊢ ∀ (i : Fin 3),
Differentiable ℝ fun x =>
((LinearMap.mk₂ ℝ (fun a b => ![a 1 * b 2 - a 2 * b 1, a 2 * b 0 - a 0 * b 2, a 0 * b 1 - a 1 * b 0]) ⋯ ⋯ ⋯ ⋯)
((WithLp.equiv 2 (Fin 3 → ℝ)) (Space.basis.repr (s.unit 3))))
((WithLp.equiv 2 (Fin 3 → ℝ)) (f₀ x)) i
intro i hf u:ℝs:Directionf₀:ℝ → EuclideanSpace ℝ (Fin 3)h':Differentiable ℝ f₀i:Fin 3⊢ Differentiable ℝ fun x =>
((LinearMap.mk₂ ℝ (fun a b => ![a 1 * b 2 - a 2 * b 1, a 2 * b 0 - a 0 * b 2, a 0 * b 1 - a 1 * b 0]) ⋯ ⋯ ⋯ ⋯)
((WithLp.equiv 2 (Fin 3 → ℝ)) (Space.basis.repr (s.unit 3))))
((WithLp.equiv 2 (Fin 3 → ℝ)) (f₀ x)) i
fin_cases i hf.«0» u:ℝs:Directionf₀:ℝ → EuclideanSpace ℝ (Fin 3)h':Differentiable ℝ f₀⊢ Differentiable ℝ fun x =>
((LinearMap.mk₂ ℝ (fun a b => ![a 1 * b 2 - a 2 * b 1, a 2 * b 0 - a 0 * b 2, a 0 * b 1 - a 1 * b 0]) ⋯ ⋯ ⋯ ⋯)
((WithLp.equiv 2 (Fin 3 → ℝ)) (Space.basis.repr (s.unit 3))))
((WithLp.equiv 2 (Fin 3 → ℝ)) (f₀ x)) ((fun i => i) ⟨0, ⋯⟩)hf.«1» u:ℝs:Directionf₀:ℝ → EuclideanSpace ℝ (Fin 3)h':Differentiable ℝ f₀⊢ Differentiable ℝ fun x =>
((LinearMap.mk₂ ℝ (fun a b => ![a 1 * b 2 - a 2 * b 1, a 2 * b 0 - a 0 * b 2, a 0 * b 1 - a 1 * b 0]) ⋯ ⋯ ⋯ ⋯)
((WithLp.equiv 2 (Fin 3 → ℝ)) (Space.basis.repr (s.unit 3))))
((WithLp.equiv 2 (Fin 3 → ℝ)) (f₀ x)) ((fun i => i) ⟨1, ⋯⟩)hf.«2» u:ℝs:Directionf₀:ℝ → EuclideanSpace ℝ (Fin 3)h':Differentiable ℝ f₀⊢ Differentiable ℝ fun x =>
((LinearMap.mk₂ ℝ (fun a b => ![a 1 * b 2 - a 2 * b 1, a 2 * b 0 - a 0 * b 2, a 0 * b 1 - a 1 * b 0]) ⋯ ⋯ ⋯ ⋯)
((WithLp.equiv 2 (Fin 3 → ℝ)) (Space.basis.repr (s.unit 3))))
((WithLp.equiv 2 (Fin 3 → ℝ)) (f₀ x)) ((fun i => i) ⟨2, ⋯⟩) <;> hf.«0» u:ℝs:Directionf₀:ℝ → EuclideanSpace ℝ (Fin 3)h':Differentiable ℝ f₀⊢ Differentiable ℝ fun x =>
((LinearMap.mk₂ ℝ (fun a b => ![a 1 * b 2 - a 2 * b 1, a 2 * b 0 - a 0 * b 2, a 0 * b 1 - a 1 * b 0]) ⋯ ⋯ ⋯ ⋯)
((WithLp.equiv 2 (Fin 3 → ℝ)) (Space.basis.repr (s.unit 3))))
((WithLp.equiv 2 (Fin 3 → ℝ)) (f₀ x)) ((fun i => i) ⟨0, ⋯⟩)hf.«1» u:ℝs:Directionf₀:ℝ → EuclideanSpace ℝ (Fin 3)h':Differentiable ℝ f₀⊢ Differentiable ℝ fun x =>
((LinearMap.mk₂ ℝ (fun a b => ![a 1 * b 2 - a 2 * b 1, a 2 * b 0 - a 0 * b 2, a 0 * b 1 - a 1 * b 0]) ⋯ ⋯ ⋯ ⋯)
((WithLp.equiv 2 (Fin 3 → ℝ)) (Space.basis.repr (s.unit 3))))
((WithLp.equiv 2 (Fin 3 → ℝ)) (f₀ x)) ((fun i => i) ⟨1, ⋯⟩)hf.«2» u:ℝs:Directionf₀:ℝ → EuclideanSpace ℝ (Fin 3)h':Differentiable ℝ f₀⊢ Differentiable ℝ fun x =>
((LinearMap.mk₂ ℝ (fun a b => ![a 1 * b 2 - a 2 * b 1, a 2 * b 0 - a 0 * b 2, a 0 * b 1 - a 1 * b 0]) ⋯ ⋯ ⋯ ⋯)
((WithLp.equiv 2 (Fin 3 → ℝ)) (Space.basis.repr (s.unit 3))))
((WithLp.equiv 2 (Fin 3 → ℝ)) (f₀ x)) ((fun i => i) ⟨2, ⋯⟩)
· hf.«2» u:ℝs:Directionf₀:ℝ → EuclideanSpace ℝ (Fin 3)h':Differentiable ℝ f₀⊢ Differentiable ℝ fun x =>
((LinearMap.mk₂ ℝ (fun a b => ![a 1 * b 2 - a 2 * b 1, a 2 * b 0 - a 0 * b 2, a 0 * b 1 - a 1 * b 0]) ⋯ ⋯ ⋯ ⋯)
((WithLp.equiv 2 (Fin 3 → ℝ)) (Space.basis.repr (s.unit 3))))
((WithLp.equiv 2 (Fin 3 → ℝ)) (f₀ x)) ((fun i => i) ⟨2, ⋯⟩) simp only [Nat.succ_eq_add_one, Nat.reduceAdd, Fin.isValue, WithLp.equiv_apply,
Fin.reduceFinMk, LinearMap.mk₂_apply, cons_val] hf.«2» u:ℝs:Directionf₀:ℝ → EuclideanSpace ℝ (Fin 3)h':Differentiable ℝ f₀⊢ Differentiable ℝ fun x =>
(Space.basis.repr (s.unit 3)).ofLp 0 * (f₀ x).ofLp 1 - (Space.basis.repr (s.unit 3)).ofLp 1 * (f₀ x).ofLp 0
fun_prop All goals completed! 🐙
lemma wave_fderiv_inner_eq_inner_fderiv_proj {f₀ : ℝ → EuclideanSpace ℝ (Fin d)}
{s : Direction d} {i : Fin d} (h' : Differentiable ℝ f₀) :
∀ x y, s.unit i * (fderiv ℝ (fun x => f₀ (inner ℝ x s.unit - c * t)) x) y i
=
inner ℝ y s.unit * (fderiv ℝ (fun x => f₀ (inner ℝ x s.unit - c * t) i) x)
(Space.basis i) := by d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀⊢ ∀ (x y : Space d),
s.unit.val i * ((fderiv ℝ (fun x => f₀ (⟪x, s.unit⟫_ℝ - c * t)) x) y).ofLp i =
⟪y, s.unit⟫_ℝ * (fderiv ℝ (fun x => (f₀ (⟪x, s.unit⟫_ℝ - c * t)).ofLp i) x) (Space.basis i)
intro x y d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ s.unit.val i * ((fderiv ℝ (fun x => f₀ (⟪x, s.unit⟫_ℝ - c * t)) x) y).ofLp i =
⟪y, s.unit⟫_ℝ * (fderiv ℝ (fun x => (f₀ (⟪x, s.unit⟫_ℝ - c * t)).ofLp i) x) (Space.basis i)
change _ =
inner ℝ y s.unit * (fderiv ℝ ((EuclideanSpace.proj i) ∘
fun x => f₀ (inner ℝ x s.unit - c * t)) x) (Space.basis i) d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ s.unit.val i * ((fderiv ℝ (fun x => f₀ (⟪x, s.unit⟫_ℝ - c * t)) x) y).ofLp i =
⟪y, s.unit⟫_ℝ * (fderiv ℝ (⇑(EuclideanSpace.proj i) ∘ fun x => f₀ (⟪x, s.unit⟫_ℝ - c * t)) x) (Space.basis i)
rw [fderiv_comp d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ s.unit.val i * ((fderiv ℝ (fun x => f₀ (⟪x, s.unit⟫_ℝ - c * t)) x) y).ofLp i =
⟪y, s.unit⟫_ℝ *
(fderiv ℝ (⇑(EuclideanSpace.proj i)) (f₀ (⟪x, s.unit⟫_ℝ - c * t)) ∘SL
fderiv ℝ (fun x => f₀ (⟪x, s.unit⟫_ℝ - c * t)) x)
(Space.basis i)hg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (⇑(EuclideanSpace.proj i)) (f₀ (⟪x, s.unit⟫_ℝ - c * t))hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => f₀ (⟪x, s.unit⟫_ℝ - c * t)) x d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ s.unit.val i * ((fderiv ℝ (fun x => f₀ (⟪x, s.unit⟫_ℝ - c * t)) x) y).ofLp i =
⟪y, s.unit⟫_ℝ *
(fderiv ℝ (⇑(EuclideanSpace.proj i)) (f₀ (⟪x, s.unit⟫_ℝ - c * t)) ∘SL
fderiv ℝ (fun x => f₀ (⟪x, s.unit⟫_ℝ - c * t)) x)
(Space.basis i)hg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (⇑(EuclideanSpace.proj i)) (f₀ (⟪x, s.unit⟫_ℝ - c * t))hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => f₀ (⟪x, s.unit⟫_ℝ - c * t)) x] d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ s.unit.val i * ((fderiv ℝ (fun x => f₀ (⟪x, s.unit⟫_ℝ - c * t)) x) y).ofLp i =
⟪y, s.unit⟫_ℝ *
(fderiv ℝ (⇑(EuclideanSpace.proj i)) (f₀ (⟪x, s.unit⟫_ℝ - c * t)) ∘SL
fderiv ℝ (fun x => f₀ (⟪x, s.unit⟫_ℝ - c * t)) x)
(Space.basis i)hg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (⇑(EuclideanSpace.proj i)) (f₀ (⟪x, s.unit⟫_ℝ - c * t))hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => f₀ (⟪x, s.unit⟫_ℝ - c * t)) x
simp only [ContinuousLinearMap.fderiv, ContinuousLinearMap.coe_comp, Function.comp_apply,
PiLp.proj_apply] d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ s.unit.val i * ((fderiv ℝ (fun x => f₀ (⟪x, s.unit⟫_ℝ - c * t)) x) y).ofLp i =
⟪y, s.unit⟫_ℝ * ((fderiv ℝ (fun x => f₀ (⟪x, s.unit⟫_ℝ - c * t)) x) (Space.basis i)).ofLp ihg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (⇑(EuclideanSpace.proj i)) (f₀ (⟪x, s.unit⟫_ℝ - c * t))hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => f₀ (⟪x, s.unit⟫_ℝ - c * t)) x
change s.unit i * (fderiv ℝ (f₀ ∘ fun x => (inner ℝ x s.unit - c * t)) x) y i =
inner ℝ y s.unit * (fderiv ℝ (f₀ ∘ fun x => (inner ℝ x s.unit - c * t)) x)
(Space.basis i) i d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ s.unit.val i * ((fderiv ℝ (f₀ ∘ fun x => ⟪x, s.unit⟫_ℝ - c * t) x) y).ofLp i =
⟪y, s.unit⟫_ℝ * ((fderiv ℝ (f₀ ∘ fun x => ⟪x, s.unit⟫_ℝ - c * t) x) (Space.basis i)).ofLp ihg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (⇑(EuclideanSpace.proj i)) (f₀ (⟪x, s.unit⟫_ℝ - c * t))hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => f₀ (⟪x, s.unit⟫_ℝ - c * t)) x
rw [fderiv_comp, d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ s.unit.val i * ((fderiv ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t) ∘SL fderiv ℝ (fun x => ⟪x, s.unit⟫_ℝ - c * t) x) y).ofLp i =
⟪y, s.unit⟫_ℝ *
((fderiv ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t) ∘SL fderiv ℝ (fun x => ⟪x, s.unit⟫_ℝ - c * t) x) (Space.basis i)).ofLp ihg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => ⟪x, s.unit⟫_ℝ - c * t) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (⇑(EuclideanSpace.proj i)) (f₀ (⟪x, s.unit⟫_ℝ - c * t))hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => f₀ (⟪x, s.unit⟫_ℝ - c * t)) x d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ s.unit.val i *
((fderiv ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t) ∘SL (fderiv ℝ (fun x => ⟪x, s.unit⟫_ℝ) x - fderiv ℝ (fun x => c * t) x))
y).ofLp
i =
⟪y, s.unit⟫_ℝ *
((fderiv ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t) ∘SL (fderiv ℝ (fun x => ⟪x, s.unit⟫_ℝ) x - fderiv ℝ (fun x => c * t) x))
(Space.basis i)).ofLp
ihf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => ⟪x, s.unit⟫_ℝ) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => c * t) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => ⟪x, s.unit⟫_ℝ - c * t) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (⇑(EuclideanSpace.proj i)) (f₀ (⟪x, s.unit⟫_ℝ - c * t))hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => f₀ (⟪x, s.unit⟫_ℝ - c * t)) x fderiv_fun_sub d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ s.unit.val i *
((fderiv ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t) ∘SL (fderiv ℝ (fun x => ⟪x, s.unit⟫_ℝ) x - fderiv ℝ (fun x => c * t) x))
y).ofLp
i =
⟪y, s.unit⟫_ℝ *
((fderiv ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t) ∘SL (fderiv ℝ (fun x => ⟪x, s.unit⟫_ℝ) x - fderiv ℝ (fun x => c * t) x))
(Space.basis i)).ofLp
ihf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => ⟪x, s.unit⟫_ℝ) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => c * t) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => ⟪x, s.unit⟫_ℝ - c * t) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (⇑(EuclideanSpace.proj i)) (f₀ (⟪x, s.unit⟫_ℝ - c * t))hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => f₀ (⟪x, s.unit⟫_ℝ - c * t)) x d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ s.unit.val i *
((fderiv ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t) ∘SL (fderiv ℝ (fun x => ⟪x, s.unit⟫_ℝ) x - fderiv ℝ (fun x => c * t) x))
y).ofLp
i =
⟪y, s.unit⟫_ℝ *
((fderiv ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t) ∘SL (fderiv ℝ (fun x => ⟪x, s.unit⟫_ℝ) x - fderiv ℝ (fun x => c * t) x))
(Space.basis i)).ofLp
ihf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => ⟪x, s.unit⟫_ℝ) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => c * t) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => ⟪x, s.unit⟫_ℝ - c * t) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (⇑(EuclideanSpace.proj i)) (f₀ (⟪x, s.unit⟫_ℝ - c * t))hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => f₀ (⟪x, s.unit⟫_ℝ - c * t)) x] d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ s.unit.val i *
((fderiv ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t) ∘SL (fderiv ℝ (fun x => ⟪x, s.unit⟫_ℝ) x - fderiv ℝ (fun x => c * t) x))
y).ofLp
i =
⟪y, s.unit⟫_ℝ *
((fderiv ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t) ∘SL (fderiv ℝ (fun x => ⟪x, s.unit⟫_ℝ) x - fderiv ℝ (fun x => c * t) x))
(Space.basis i)).ofLp
ihf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => ⟪x, s.unit⟫_ℝ) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => c * t) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => ⟪x, s.unit⟫_ℝ - c * t) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (⇑(EuclideanSpace.proj i)) (f₀ (⟪x, s.unit⟫_ℝ - c * t))hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => f₀ (⟪x, s.unit⟫_ℝ - c * t)) x
simp only [fderiv_fun_const, Pi.zero_apply, sub_zero, ContinuousLinearMap.coe_comp,
Function.comp_apply, differentiableAt_fun_id, differentiableAt_const, fderiv_inner_apply,
_root_.zero_apply, inner_zero_right, fderiv_fun_id, ContinuousLinearMap.coe_id',
id_eq, zero_add] d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ s.unit.val i * ((fderiv ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t)) ⟪y, s.unit⟫_ℝ).ofLp i =
⟪y, s.unit⟫_ℝ * ((fderiv ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t)) ⟪Space.basis i, s.unit⟫_ℝ).ofLp ihf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => ⟪x, s.unit⟫_ℝ) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => c * t) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => ⟪x, s.unit⟫_ℝ - c * t) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (⇑(EuclideanSpace.proj i)) (f₀ (⟪x, s.unit⟫_ℝ - c * t))hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => f₀ (⟪x, s.unit⟫_ℝ - c * t)) x
simp only [fderiv_eq_smul_deriv, PiLp.smul_apply, smul_eq_mul, basis_inner] d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ s.unit.val i * (⟪y, s.unit⟫_ℝ * (_root_.deriv f₀ (⟪x, s.unit⟫_ℝ - c * t)).ofLp i) =
⟪y, s.unit⟫_ℝ * (s.unit.val i * (_root_.deriv f₀ (⟪x, s.unit⟫_ℝ - c * t)).ofLp i)hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => ⟪x, s.unit⟫_ℝ) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => c * t) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => ⟪x, s.unit⟫_ℝ - c * t) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (⇑(EuclideanSpace.proj i)) (f₀ (⟪x, s.unit⟫_ℝ - c * t))hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => f₀ (⟪x, s.unit⟫_ℝ - c * t)) x
rw [← mul_one (s.unit i), d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ s.unit.val i * 1 * (⟪y, s.unit⟫_ℝ * (_root_.deriv f₀ (⟪x, s.unit⟫_ℝ - c * t)).ofLp i) =
⟪y, s.unit⟫_ℝ * (s.unit.val i * 1 * (_root_.deriv f₀ (⟪x, s.unit⟫_ℝ - c * t)).ofLp i)hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => ⟪x, s.unit⟫_ℝ) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => c * t) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => ⟪x, s.unit⟫_ℝ - c * t) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (⇑(EuclideanSpace.proj i)) (f₀ (⟪x, s.unit⟫_ℝ - c * t))hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => f₀ (⟪x, s.unit⟫_ℝ - c * t)) x d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ s.unit.val i • 1 * (⟪y, s.unit⟫_ℝ * (_root_.deriv f₀ (⟪x, s.unit⟫_ℝ - c * t)).ofLp i) =
⟪y, s.unit⟫_ℝ * (s.unit.val i • 1 * (_root_.deriv f₀ (⟪x, s.unit⟫_ℝ - c * t)).ofLp i)hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => ⟪x, s.unit⟫_ℝ) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => c * t) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => ⟪x, s.unit⟫_ℝ - c * t) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (⇑(EuclideanSpace.proj i)) (f₀ (⟪x, s.unit⟫_ℝ - c * t))hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => f₀ (⟪x, s.unit⟫_ℝ - c * t)) x ← smul_eq_mul (s.unit i) d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ s.unit.val i • 1 * (⟪y, s.unit⟫_ℝ * (_root_.deriv f₀ (⟪x, s.unit⟫_ℝ - c * t)).ofLp i) =
⟪y, s.unit⟫_ℝ * (s.unit.val i • 1 * (_root_.deriv f₀ (⟪x, s.unit⟫_ℝ - c * t)).ofLp i)hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => ⟪x, s.unit⟫_ℝ) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => c * t) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => ⟪x, s.unit⟫_ℝ - c * t) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (⇑(EuclideanSpace.proj i)) (f₀ (⟪x, s.unit⟫_ℝ - c * t))hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => f₀ (⟪x, s.unit⟫_ℝ - c * t)) x d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ s.unit.val i • 1 * (⟪y, s.unit⟫_ℝ * (_root_.deriv f₀ (⟪x, s.unit⟫_ℝ - c * t)).ofLp i) =
⟪y, s.unit⟫_ℝ * (s.unit.val i • 1 * (_root_.deriv f₀ (⟪x, s.unit⟫_ℝ - c * t)).ofLp i)hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => ⟪x, s.unit⟫_ℝ) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => c * t) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => ⟪x, s.unit⟫_ℝ - c * t) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (⇑(EuclideanSpace.proj i)) (f₀ (⟪x, s.unit⟫_ℝ - c * t))hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => f₀ (⟪x, s.unit⟫_ℝ - c * t)) x] d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ s.unit.val i • 1 * (⟪y, s.unit⟫_ℝ * (_root_.deriv f₀ (⟪x, s.unit⟫_ℝ - c * t)).ofLp i) =
⟪y, s.unit⟫_ℝ * (s.unit.val i • 1 * (_root_.deriv f₀ (⟪x, s.unit⟫_ℝ - c * t)).ofLp i)hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => ⟪x, s.unit⟫_ℝ) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => c * t) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => ⟪x, s.unit⟫_ℝ - c * t) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (⇑(EuclideanSpace.proj i)) (f₀ (⟪x, s.unit⟫_ℝ - c * t))hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => f₀ (⟪x, s.unit⟫_ℝ - c * t)) x
rw [← mul_one (inner ℝ y s.unit), d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ s.unit.val i • 1 * (⟪y, s.unit⟫_ℝ * 1 * (_root_.deriv f₀ (⟪x, s.unit⟫_ℝ - c * t)).ofLp i) =
⟪y, s.unit⟫_ℝ * 1 * (s.unit.val i • 1 * (_root_.deriv f₀ (⟪x, s.unit⟫_ℝ - c * t)).ofLp i)hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => ⟪x, s.unit⟫_ℝ) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => c * t) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => ⟪x, s.unit⟫_ℝ - c * t) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (⇑(EuclideanSpace.proj i)) (f₀ (⟪x, s.unit⟫_ℝ - c * t))hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => f₀ (⟪x, s.unit⟫_ℝ - c * t)) x d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ s.unit.val i • 1 * (⟪y, s.unit⟫_ℝ • 1 * (_root_.deriv f₀ (⟪x, s.unit⟫_ℝ - c * t)).ofLp i) =
⟪y, s.unit⟫_ℝ • 1 * (s.unit.val i • 1 * (_root_.deriv f₀ (⟪x, s.unit⟫_ℝ - c * t)).ofLp i)hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => ⟪x, s.unit⟫_ℝ) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => c * t) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => ⟪x, s.unit⟫_ℝ - c * t) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (⇑(EuclideanSpace.proj i)) (f₀ (⟪x, s.unit⟫_ℝ - c * t))hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => f₀ (⟪x, s.unit⟫_ℝ - c * t)) x ← smul_eq_mul (inner ℝ y s.unit) d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ s.unit.val i • 1 * (⟪y, s.unit⟫_ℝ • 1 * (_root_.deriv f₀ (⟪x, s.unit⟫_ℝ - c * t)).ofLp i) =
⟪y, s.unit⟫_ℝ • 1 * (s.unit.val i • 1 * (_root_.deriv f₀ (⟪x, s.unit⟫_ℝ - c * t)).ofLp i)hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => ⟪x, s.unit⟫_ℝ) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => c * t) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => ⟪x, s.unit⟫_ℝ - c * t) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (⇑(EuclideanSpace.proj i)) (f₀ (⟪x, s.unit⟫_ℝ - c * t))hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => f₀ (⟪x, s.unit⟫_ℝ - c * t)) x d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ s.unit.val i • 1 * (⟪y, s.unit⟫_ℝ • 1 * (_root_.deriv f₀ (⟪x, s.unit⟫_ℝ - c * t)).ofLp i) =
⟪y, s.unit⟫_ℝ • 1 * (s.unit.val i • 1 * (_root_.deriv f₀ (⟪x, s.unit⟫_ℝ - c * t)).ofLp i)hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => ⟪x, s.unit⟫_ℝ) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => c * t) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => ⟪x, s.unit⟫_ℝ - c * t) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (⇑(EuclideanSpace.proj i)) (f₀ (⟪x, s.unit⟫_ℝ - c * t))hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => f₀ (⟪x, s.unit⟫_ℝ - c * t)) x] d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ s.unit.val i • 1 * (⟪y, s.unit⟫_ℝ • 1 * (_root_.deriv f₀ (⟪x, s.unit⟫_ℝ - c * t)).ofLp i) =
⟪y, s.unit⟫_ℝ • 1 * (s.unit.val i • 1 * (_root_.deriv f₀ (⟪x, s.unit⟫_ℝ - c * t)).ofLp i)hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => ⟪x, s.unit⟫_ℝ) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => c * t) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => ⟪x, s.unit⟫_ℝ - c * t) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (⇑(EuclideanSpace.proj i)) (f₀ (⟪x, s.unit⟫_ℝ - c * t))hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => f₀ (⟪x, s.unit⟫_ℝ - c * t)) x
simp only [smul_eq_mul, mul_comm, one_mul, ← mul_assoc] hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => ⟪x, s.unit⟫_ℝ) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => c * t) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ f₀ (⟪x, s.unit⟫_ℝ - c * t)hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => ⟪x, s.unit⟫_ℝ - c * t) xhg d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (⇑(EuclideanSpace.proj i)) (f₀ (⟪x, s.unit⟫_ℝ - c * t))hf d:ℕc:ℝt:ℝf₀:ℝ → EuclideanSpace ℝ (Fin d)s:Direction di:Fin dh':Differentiable ℝ f₀x:Space dy:Space d⊢ DifferentiableAt ℝ (fun x => f₀ (⟪x, s.unit⟫_ℝ - c * t)) x
repeat fun_prop All goals completed! 🐙