FDeriv Helper Lemmas for Global Theorem #
This file contains helper lemmas for computing fderiv in coordinate directions. These show that fderiv f y (e_i) equals the partial derivative in direction i.
Main Results #
fderiv_rotR_rotM_in_e0- fderiv of rotR ∘ rotM in direction e₀ gives rotR'fderiv_rotR_rotM_in_e1- fderiv of rotR ∘ rotM in direction e₁ gives rotR ∘ rotMθfderiv_rotR_rotM_in_e2- fderiv of rotR ∘ rotM in direction e₂ gives rotR ∘ rotMφfderiv_rotR'_rotM_in_e0- fderiv of rotR' ∘ rotM in direction e₀ gives -rotRfderiv_rotR'_rotM_in_e1- fderiv of rotR' ∘ rotM in direction e₁ gives rotR' ∘ rotMθ
theorem
GlobalTheorem.HasDerivAt_rotR'
(α : ℝ)
(v : Euc(2))
:
HasDerivAt (fun (x : ℝ) => (rotR' x) v) (-(rotR α) v) α
theorem
GlobalTheorem.fderiv_rotR'_rotM_in_e0
(S : Euc(3))
(y : E 3)
(α θ φ : ℝ)
(hα : y.ofLp 0 = α)
(hθ : y.ofLp 1 = θ)
(hφ : y.ofLp 2 = φ)
(hf_diff : DifferentiableAt ℝ (fun (z : E 3) => (rotR' (z.ofLp 0)) ((rotM (z.ofLp 1) (z.ofLp 2)) S)) y)
:
fderiv of rotR' (y.ofLp 0) (rotM (y.ofLp 1) (y.ofLp 2) S) in direction e₀ gives -rotR
theorem
GlobalTheorem.fderiv_rotR'_rotM_in_e1
(S : Euc(3))
(y : E 3)
(α θ φ : ℝ)
(hα : y.ofLp 0 = α)
(hθ : y.ofLp 1 = θ)
(hφ : y.ofLp 2 = φ)
(hf_diff : DifferentiableAt ℝ (fun (z : E 3) => (rotR' (z.ofLp 0)) ((rotM (z.ofLp 1) (z.ofLp 2)) S)) y)
:
fderiv of rotR' (y.ofLp 0) (rotM (y.ofLp 1) (y.ofLp 2) S) in direction e₁ gives rotR' α (rotMθ θ φ S)
theorem
GlobalTheorem.fderiv_rotR'_rotM_in_e2
(S : Euc(3))
(y : E 3)
(α θ φ : ℝ)
(hα : y.ofLp 0 = α)
(hθ : y.ofLp 1 = θ)
(hφ : y.ofLp 2 = φ)
(hf_diff : DifferentiableAt ℝ (fun (z : E 3) => (rotR' (z.ofLp 0)) ((rotM (z.ofLp 1) (z.ofLp 2)) S)) y)
:
fderiv of rotR' (y.ofLp 0) (rotM (y.ofLp 1) (y.ofLp 2) S) in direction e₂ gives rotR' α (rotMφ θ φ S)
nth_partial of rotproj_inner in coordinate directions #
These combine fderiv_inner_const with fderiv_rotR_rotM_in_e* to give
function-level formulas for the partial derivatives of rotproj_inner,
eliminating the funext/congrArg boilerplate at each use site.