Encyclopedia Geometry Geometry Dihedral Derivatives Has Deriv At Dihedral Angle3 Sq Explicit
Geometry Dihedral Derivatives Has Deriv At Dihedral Angle3 Sq Explicit
In a tetrahedron, a dihedral angle is the angle between two faces; a machine-checked theorem now gives its exact rate of change as an edge length varies.
A derivative for a tetrahedron's angle
A dihedral angle is the angle between two faces of a solid, the way the hinge of a book opens between two covers. In a tetrahedron, a pyramid with four triangular faces, each of the six edges is a hinge where two faces meet. The angle at that hinge is determined entirely by the six edge lengths, and the question this page answers is: if you nudge one edge length by a tiny amount, how much does the hinge angle change? That rate of change is the derivative of the angle with respect to the edge length.
The framework's machine-checked library of formal theorems proves this derivative exists and gives a closed formula for it. The theorem, named hasDerivAt_dihedralAngle3Sq_explicit, states that if you change one squared edge length while holding the others fixed, the dihedral angle changes at a rate given by a specific algebraic expression. The expression is the standard calculus chain rule applied to the angle's definition as the arccosine of a ratio built from the tetrahedron's geometry. It multiplies the derivative of that ratio by the factor -1 divided by the square root of 1 minus the ratio squared, the familiar derivative of arccosine.
The result is not a numerical approximation. It is an exact statement, verified by the proof assistant, that the derivative equals the closed-form value at the chosen point. The theorem requires that the geometry is not degenerate: the denominator of the ratio must not be zero, and the cosine of the angle must not be exactly 1 or -1, which would mean the angle is 0 or 180 degrees, a flat or fully folded configuration where the arccosine derivative formula breaks down.
This derivative is a tool for downstream work, particularly in Regge calculus, a discrete approach to general relativity where spacetime is built from flat tetrahedral pieces. There, the way a dihedral angle responds to changes in edge lengths controls how curvature is distributed. What this theorem does not claim is that the derivative formula itself is derived from physics; it is a purely geometric and analytic fact. It also does not claim that the derivative is valid at degenerate configurations, only at interior points where the angle is strictly between 0 and 180 degrees. The proof of the underlying cofactor derivative, the algebraic heart of the expression, lives in a separate module; this theorem provides the clean interface that downstream code can rely on.
THEOREM hasDerivAt_dihedralAngle3Sq_explicit · IndisputableMonolith/Geometry/DihedralDerivatives.lean
/-- Explicit coordinate derivative of the cofactor-defined tetrahedral
dihedral angle. -/
theorem hasDerivAt_dihedralAngle3Sq_explicit
(a : CayleyMengerPolynomial.SqEdges) (e k : Fin 6)
(hprod_ne :
(let p := (oppositeCMVertices e).1
let q := (oppositeCMVertices e).2
CayleyMengerMatrix.cmCofactor3 a p p *
CayleyMengerMatrix.cmCofactor3 a q q) ≠ 0)
(hden_ne : dihedralDenom3 a e ≠ 0)
(hm : dihedralCos3Sq a e ≠ -1)
(hp : dihedralCos3Sq a e ≠ 1) :
HasDerivAt (fun t : ℝ => dihedralAngle3Sq (Function.update a k t) e)
(dihedralAngle3SqClosedFormDeriv a e k) (a k) := by
have hbase :
Function.update a k (a k) = a := by
funext i
by_cases hi : i = k <;> simp [Function.update, hi]
have hm' : dihedralCos3Sq (Function.update a k (a k)) e ≠ -1 := by
simpa [hbase] using hm
have hp' : dihedralCos3Sq (Function.update a k (a k)) e ≠ 1 := by
simpa [hbase] using hp
simpa [dihedralAngle3SqClosedFormDeriv] using
hasDerivAt_dihedralAngle3Sq_along e
(hasDerivAt_dihedralCos3Sq_explicit a e k hprod_ne hden_ne)
hm' hp'
What this page does not claim
The derivative formula is not derived from physical principles; it is a purely geometric and analytic result. The theorem does not cover degenerate tetrahedra where the cosine of the angle is exactly 1 or -1.
Verify this page
Every tagged claim above names its theorem. To check one yourself rather than trust this page, elaborate the source module with Lean 4 and audit its axiom basis:
$ lake env lean IndisputableMonolith/Geometry/DihedralDerivatives.lean
expected axiom basis: [propext, Classical.choice, Quot.sound] (the Lean kernel's standard three; no RS-specific axioms)
A page whose claims cannot be reproduced this way does not ship. In production, every anchor links to the exact declaration in the public source release, and this block carries the build receipt for the page itself.
Derived articles
This page is generated by a question-recursion engine: the questions its answers raise become the next pages. The current agenda, with open targets marked red:
- What is the closed-form derivative of the cofactor ratio that feeds into this angle derivative?
- How does this derivative behave at the degenerate endpoints where the angle is 0 or 180 degrees?
- How is this derivative used in the Regge calculus module for discrete spacetime?
MACHINE LAYER · GROUNDED CLAIM TABLE · CLICK TO EXPAND
THEOREM hasDerivAt_dihedralAngle3Sq_explicit · IndisputableMonolith/Geometry/DihedralDerivatives.lean
/-- Explicit coordinate derivative of the cofactor-defined tetrahedral dihedral angle. -/ theorem hasDerivAt_dihedralAngle3Sq_explicit (a : CayleyMengerPolynomial.SqEdges) (e k : Fin 6) (hprod_ne : (let p := (oppositeCMVertices e).1 let q := (oppositeCMVertices e).2 CayleyMengerMatrix.cmCofactor3 a p p * CayleyMengerMatrix.cmCofactor3 a q q) ≠ 0) (hden_ne : dihedralDenom3 a e ≠ 0) (hm : dihedralCos3Sq a e ≠ -1) (hp : dihedralCos3Sq a e ≠ 1) : HasDerivAt (fun t : ℝ => dihedralAngle3Sq (Function.update a k t) e) (dihedralAngle3SqClosedFormDeriv a e k) (a k) := by have hbase : Function.update a k (a k) = a := by funext i by_cases hi : i = k <;> simp [Function.update, hi] have hm' : dihedralCos3Sq (Function.update a k (a k)) e ≠ -1 := by simpa [hbase] using hm have hp' : dihedralCos3Sq (Function.update a k (a k)) e ≠ 1 := by simpa [hbase] using hp simpa [dihedralAngle3SqClosedFormDeriv] using hasDerivAt_dihedralAngle3Sq_along e (hasDerivAt_dihedralCos3Sq_explicit a e k hprod_ne hden_ne) hm' hp'The theorem proves that if you change one squared edge length while holding the others fixed, the dihedral angle changes at a rate given by a specific algebraic expression. hasDerivAt_dihedralAngle3Sq_explicit · IndisputableMonolith/Geometry/DihedralDerivatives.lean