Prove2Me
Navigate
DiscoverCollectionsFormalpediaBlogsUsersMomentumMy Missions+
Prove2Me
⌕
Log in
← Formalpedia

Ingoing Kerr: the function FFF and the null-coframe Lorentz frame

Definition
Atlas_Kerr_InParts

by He Wang · Oct 13, 2026 · Mathlib 0df444a (Lean v4.33.1)

coordinate-geometryexact-vacuum-atlasgeneral-relativityingoing-kerr-coordinateskerr-metriclorentzian-signature

Fk(M,a,x)=1−2Mr/ΣF_k(M,a,x)=1-2Mr/\SigmaFk​(M,a,x)=1−2Mr/Σ at the point xxx, and the frame matrix

frameIn(x)=(110−asin⁡θF−12F+120−asin⁡θ00100001/sin⁡θ),\mathrm{frameIn}(x)=\begin{pmatrix}1&1&0&-a\sin\theta\\\tfrac{F-1}{2}&\tfrac{F+1}{2}&0&-a\sin\theta\\0&0&1&0\\0&0&0&1/\sin\theta\end{pmatrix},frameIn(x)=​12F−1​00​12F+1​00​0010​−asinθ−asinθ01/sinθ​​,

whose columns diagonalise the ingoing Kerr metric: frameInT gin frameIn=diag(−1,1,Σ,Σ)\mathrm{frameIn}^{\mathsf T}\,g^{\rm in}\,\mathrm{frameIn}=\mathrm{diag}(-1,1,\Sigma,\Sigma)frameInTginframeIn=diag(−1,1,Σ,Σ). It involves neither Δ\DeltaΔ nor square roots, so it needs no Δ≠0\Delta\neq0Δ=0 condition: it applies at points with Δ=0\Delta=0Δ=0 wherever Σ≠0\Sigma\neq0Σ=0 and sin⁡θ≠0\sin\theta\neq0sinθ=0 also hold (the entry 1/sin⁡θ1/\sin\theta1/sinθ requires sin⁡θ≠0\sin\theta\neq0sinθ=0). No horizon statement is made.

Clarification of the preserved source comment (2026-10-14). The published Lean text of this bundle keeps its original module docstring. The comment does not affect the Lean definitions and is left unchanged (published payloads are immutable; no replacement node was created). It says the Lorentz frame “is valid on the horizons Δ = 0”. Correct reading: the frame needs no Δ≠0\Delta\neq0Δ=0 condition and applies at points with Δ=0\Delta=0Δ=0 that lie in the domain (Σ≠0\Sigma\neq0Σ=0, sin⁡θ≠0\sin\theta\neq0sinθ=0); “horizons” only names the coordinate locus Δ=0\Delta=0Δ=0, and no horizon, causal or global statement is made.

Frame data for the signature obligation of row 7, obtained by pulling the diagonalisation of the null block (−F110)\begin{pmatrix}-F&1\\1&0\end{pmatrix}(−F1​10​) back through the coframe ℓ=dv+asin⁡2θ dφ\ell=dv+a\sin^2\theta\,d\varphiℓ=dv+asin2θdφ, m=dr+asin⁡2θ dφm=dr+a\sin^2\theta\,d\varphim=dr+asin2θdφ.

Formalization Note Definition bundle generated by skeleton subtraction from the source module Atlas.Kerr.InParts; declarations: ExactVacuumAtlas.Kerr.In.Fk, ExactVacuumAtlas.Kerr.In.frameIn. No theorem is proved inside the bundle; it imports only Mathlib and other Definitions.Def_* bundles.

Definition code
-- Generated by scripts/release01/gen_platform_tree.py (ATLAS-RELEASE-01) by skeleton subtraction from Atlas/Kerr/InParts.lean
-- definition bundle: kept ExactVacuumAtlas.Kerr.In.Fk, ExactVacuumAtlas.Kerr.In.frameIn
import Mathlib
import Definitions.Def_Atlas_Core_Basic
import Definitions.Def_Atlas_Kerr_InDefs
set_option maxHeartbeats 4000000

/-!
# Ingoing Kerr: symmetry, inverse, `C^∞`, Lorentz signature on `domIn a`

The Lorentz frame avoids `Δ` entirely, so it is valid on the horizons `Δ = 0`. With
`ℓ = dv + a sin²θ dφ`, `m = dr + a sin²θ dφ`, the metric is
`−F ℓ² + 2 ℓ m + Σ dθ² + Σ (sin θ dφ)²`, `F = 1 − 2Mr/Σ`; the null block `[[−F, 1], [1, 0]]` is
diagonalised by `(1, (F−1)/2)`, `(1, (F+1)/2)` exactly as for Schwarzschild EF. Pulling back
through the coframe gives the columns of `frameIn`, with `frameInᵀ g frameIn = diag(−1, 1, Σ, Σ)`.
-/

open Real
open scoped ContDiff

namespace ExactVacuumAtlas.Kerr.In

/-- `F = 1 − 2Mr/Σ` at a point. -/
noncomputable def Fk (M a : ℝ) (x : Pt 4) : ℝ := 1 - 2 * M * x 1 / (x 1 ^ 2 + a ^ 2 * cos (x 2) ^ 2)

/-- Frame (columns) for the ingoing Kerr metric; no `Δ`, no square roots. -/
noncomputable def frameIn (M a : ℝ) (x : Pt 4) : Matrix (Fin 4) (Fin 4) ℝ :=
  !![1, 1, 0, -(a * sin (x 2));
     (Fk M a x - 1) / 2, (Fk M a x + 1) / 2, 0, -(a * sin (x 2));
     0, 0, 1, 0;
     0, 0, 0, 1 / sin (x 2)]

/-! Generated (inline, ATLAS-B3-01): `C^∞` of every component on `domIn a`. -/

end ExactVacuumAtlas.Kerr.In
Source
M. Visser, arXiv:0706.0622, eq. (E:K1) (Survey-grqc-3.tex lines 205–215), Visser's u renamed v; Sylvester's law of inertia (standard linear algebra); Mathlib LinearAlgebra/QuadraticForm/Signature.lean (pinned 0df444a3) for sigPos/sigNeg; Lean source: repository ExactVacuumAtlas (private repository, not publicly accessible; GitHub remote pending (no GitHub identity on the build server)), commit 35f26e6a22f5d72380094fa94edc72dea667df53, Atlas/Kerr/InParts.lean (source module Atlas.Kerr.InParts, file sha256 17af9d47bd44ca217beb6f3391ee7ff09483b60078e16ce47ce20d43ee53ced9; uploaded bundle = platform_mirror/Definitions/Def_Atlas_Kerr_InParts.lean, sha256 da54aeb527d9742bee2d04ade5624a543396a0be32220b86ef47bbf346b59454)
Human review
  • Endorsed by Shuze Chen · Oct 14, 2026

    Confirmed by the moderator at approval.

  • Endorsed by He Wang · Oct 14, 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