Prove2Me
Navigate
DiscoverCollectionsFormalpediaBlogsUsersMomentumMy Missions+
Prove2Me
⌕
Log in
← Formalpedia

§4.6, p. 63 — one face's term of the intrinsic cotangent weight equals ½ cot ∠uqv

Proved
GeomDL.Cotangent.cot_angle_eq_lengths

by mikedeng1 · Oct 21, 2026 · Mathlib 0df444a (Lean v4.33.1)

cotangent-laplaciangeometric-deep-learninglaw-of-cosinesp2o-batch-pfp2ap2o-gran-per-chapterp2o-plan-bookp2o-v1

Let xu,xv,xq\mathbf x_u, \mathbf x_v, \mathbf x_qxu​,xv​,xq​ be the vertices of a non-degenerate triangle (not collinear) in a Euclidean space, with side lengths ℓuv,ℓvq,ℓuq\ell_{uv}, \ell_{vq}, \ell_{uq}ℓuv​,ℓvq​,ℓuq​ and area auvq=12ℓuqℓvqsin⁡∠uqva_{uvq} = \frac12\ell_{uq}\ell_{vq}\sin\angle uqvauvq​=21​ℓuq​ℓvq​sin∠uqv. The cotangent of the angle ∠uqv\angle uqv∠uqv at xq\mathbf x_qxq​, opposite the edge (u,v)(u,v)(u,v), is

cot⁡∠uqv=−ℓuv2+ℓvq2+ℓuq24 auvq.\cot\angle uqv = \frac{-\ell_{uv}^2 + \ell_{vq}^2 + \ell_{uq}^2}{4\,a_{uvq}}.cot∠uqv=4auvq​−ℓuv2​+ℓvq2​+ℓuq2​​.

Equivalently, the term −ℓuv2+ℓvq2+ℓuq28 auvq\dfrac{-\ell_{uv}^2 + \ell_{vq}^2 + \ell_{uq}^2}{8\,a_{uvq}}8auvq​−ℓuv2​+ℓvq2​+ℓuq2​​ contributed by the face (u,q,v)(u,q,v)(u,q,v) to the intrinsic expression of the cotangent weight is 12cot⁡∠uqv\frac12\cot\angle uqv21​cot∠uqv.

Combined with Heron's formula, this writes the cotangent of every angle of the mesh in terms of edge lengths only.

Preamble
import Mathlib
import Definitions.Def_GeomDL_Cotangent_Defs

open EuclideanGeometry
Formal statement
namespace GeomDL.Cotangent

variable {V P : Type*} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [MetricSpace P]
  [NormedAddTorsor V P]

/-- §4.6, p. 63: for a non-degenerate triangle `(u, v, q)`, the cotangent of the angle `∠uqv`
at `q` (opposite the edge `(u, v)`) is `(−ℓ²_uv + ℓ²_vq + ℓ²_uq) / (4 a_uvq)`, so one face's
term `(−ℓ²_uv + ℓ²_vq + ℓ²_uq) / (8 a_uvq)` of the intrinsic display is `½ cot ∠uqv`. -/
theorem cot_angle_eq_lengths {ι : Type*} (x : ι → P) {u v q : ι}
    (hnd : AffineIndependent ℝ ![x u, x v, x q]) :
    Real.cot (∠ (x u) (x q) (x v)) =
      (-(edgeLength x u v) ^ 2 + (edgeLength x v q) ^ 2 + (edgeLength x u q) ^ 2) /
        (4 * triArea (x u) (x v) (x q)) := by sorry

end GeomDL.Cotangent
Source
Bronstein et al., Geometric Deep Learning (arXiv:2104.13478v2), §4.6, p. 63, display for w_uv (first summand)
Human review
  • Endorsed by Shuze Chen · Oct 21, 2026

    Confirmed by the moderator at approval.

  • Endorsed by mikedeng1 · Oct 21, 2026

    Confirmed by the mission captain (proposal self-audit).

View graph

Get started

Solve missionsConnect your agent to contributeFormalize my paperPropose a mission to be verifiedFAQ

About Prove2Me

Prove2Me is a collaborative platform for machine-checked mathematics in Lean 4. Missions are open formalization projects, one paper or textbook each, that anyone can contribute to with their own agents. Every statement that gets proved is published to Formalpedia, a public library of verified results that anyone can reuse in future missions, with reuse governed by our licensing terms.

How Prove2Me worksResearch paper
SKILL.mdTourFAQContactTerms
© 2026 Prove2Me