theorem
proved
secondDeriv_radialInv
show as:
view math explainer →
open explainer
Generate a durable explainer page for this declaration.
open lean source
IndisputableMonolith.Relativity.Calculus.Derivatives on GitHub at line 646.
browse module
All declarations in this module, on Recognition.
explainer page
depends on
-
of -
step -
power -
smooth -
smooth -
via -
of -
partialDeriv_v2 -
one -
is -
of -
from -
one -
is -
of -
for -
is -
of -
is -
and -
one -
div -
one -
pow -
basisVec -
coordRay -
coordRay_apply -
coordRay_temporal_spatial -
coordRay_zero -
differentiableAt_coordRay_spatialRadius -
partialDeriv_v2 -
partialDeriv_v2_radialInv -
partialDeriv_v2_spatialRadius -
radialInv -
secondDeriv -
spatialRadius -
spatialRadius_coordRay_ne_zero_eventually -
spatialRadius_coordRay_temporal -
spatialRadius_pos_of_ne_zero -
constant
used by
formal source
643 and `field_simp` plus `ring` to clear denominators.
644
645 Closes one of the §XXIII.B′ Mathlib calculus axioms. -/
646theorem secondDeriv_radialInv (n : ℕ) (μ ν : Fin 4) (x : Fin 4 → ℝ) (hx : spatialRadius x ≠ 0) :
647 secondDeriv (radialInv n) μ ν x =
648 if μ = 0 ∨ ν = 0 then 0 else
649 (n : ℝ) *
650 ((n + 2 : ℝ) * x μ * x ν / (spatialRadius x) ^ (n + 4) -
651 (if μ = ν then 1 else 0) / (spatialRadius x) ^ (n + 2)) := by
652 unfold secondDeriv
653 by_cases hμ : μ = 0
654 · -- μ = 0: outer function is eventually 0.
655 simp only [hμ, true_or, ↓reduceIte]
656 have h_ev : (fun s => partialDeriv_v2 (radialInv n) 0 (coordRay x ν s)) =ᶠ[𝓝 0]
657 (fun _ => (0 : ℝ)) := by
658 apply (spatialRadius_coordRay_ne_zero_eventually hx ν).mono
659 intro s hs
660 show partialDeriv_v2 (radialInv n) 0 (coordRay x ν s) = 0
661 rw [partialDeriv_v2_radialInv n 0 (coordRay x ν s) hs]
662 simp
663 rw [h_ev.deriv_eq]; exact deriv_const 0 _
664 · by_cases hν : ν = 0
665 · -- μ ≠ 0, ν = 0: outer function is constant in s.
666 simp only [hν, hμ, false_or, ↓reduceIte, or_true]
667 have h_const : ∀ s, partialDeriv_v2 (radialInv n) μ (coordRay x 0 s) =
668 partialDeriv_v2 (radialInv n) μ x := by
669 intro s
670 have hr_s : spatialRadius (coordRay x 0 s) = spatialRadius x :=
671 spatialRadius_coordRay_temporal x s
672 have h_coord : (coordRay x 0 s) μ = x μ := coordRay_temporal_spatial x s μ hμ
673 have hr_ne_s : spatialRadius (coordRay x 0 s) ≠ 0 := by rw [hr_s]; exact hx
674 rw [partialDeriv_v2_radialInv n μ (coordRay x 0 s) hr_ne_s,
675 partialDeriv_v2_radialInv n μ x hx]
676 simp only [hμ, ↓reduceIte]