proved, what is sorry, and why the Lipschitz constant on the coupling is the one open door.AXLE/Chain.lean walk-through: the operator chain $G = U\circ F\circ K\circ C$ as a Lean structure.SpiralReturn: the formal statement of Theorem 2.1 and what exists in Mathlib to close it.Theorem 2.1 in its symmetric form is an ODE result. Calculus says it is true. So why formalise it?
sorry. Both deserve attention.AXLE/Chain.lean — The Operator ChainThe four-operator chain $G = U\circ F\circ K\circ C$ from GTCT (contraction, curvature, filter, unfolding) is represented as a dependent structure. Each operator is a map between state spaces with its own regularity hypothesis.
/- AXLE/Chain.lean — operator chain for GTCT -/ import Mathlib.Analysis.ODE.Gronwall import Mathlib.Analysis.NormedSpace.Basic import Mathlib.Topology.MetricSpace.Lipschitz namespace AXLE structure OperatorChain (α β γ δ ω : Type*) [MetricSpace α] [MetricSpace β] [MetricSpace γ] [MetricSpace δ] [MetricSpace ω] where C : α → β -- Contract K : β → γ -- Curvature F : γ → δ -- Filter U : δ → ω -- Unfold C_lip : LipschitzWith 1 C K_lip : ∃ L : ℝ≥0, LipschitzWith L K -- ← Issue #12 F_lip : LipschitzWith 1 F U_cont : Continuous U def OperatorChain.compose (ch : OperatorChain α β γ δ ω) : α → ω := ch.U ∘ ch.F ∘ ch.K ∘ ch.C end AXLE
Note the regularity hypotheses: $C$ and $F$ are non-expanding (LipschitzWith 1), $U$ only needs to be continuous (it fans information out, it need not preserve metric), and $K$ — the curvature operator, geometrically the dm³ radial flow — carries an existential Lipschitz constant. This is the crucial structural choice.
Lipschitz API supports.
SpiralReturn — Formalising Theorem 2.1The ODE itself is a Picard–Lindelöf application. Mathlib's ODE.Gronwall and ODE.PicardLindelof give us existence, uniqueness, and the Gronwall lemma. The skeleton below shows the statement in its current form.
/- AXLE/SpiralReturn.lean — Theorem 2.1 (symmetric) -/ import AXLE.Chain import Mathlib.Analysis.ODE.PicardLindelof import Mathlib.Analysis.SpecialFunctions.Log.Basic namespace AXLE /-- The dm³ radial equation at ε = 2. -/ noncomputable def dm3Radial (z : ℝ) (r : ℝ) : ℝ := r * (1 - r^2) + 2 * (r - 1) * Real.exp (-z) /-- Theorem 2.1 (symmetric): if |r₀ - 1| < 1/3 and z₀ ≥ log 2, the solution converges exponentially to r = 1 at rate -2. -/ theorem spiralReturn {r₀ z₀ : ℝ} (hr : |r₀ - 1| < 1/3) (hz : z₀ ≥ Real.log 2) : ∃ (r : ℝ → ℝ), ∃ (μ : ℝ), μ < 0 ∧ r 0 = r₀ ∧ (∀ t ≥ 0, |r t - 1| ≤ |r₀ - 1| * Real.exp (μ * t)) := by -- Step 1: apply Picard–Lindelöf for local existence -- Step 2: derive the scalar inequality ½ d/dt u² ≤ (-2 + 3ε₀ + εe^{-z₀}) u² -- Step 3: apply Mathlib.Analysis.ODE.Gronwall -- Step 4: the Lipschitz bound needed at Step 2 — see Issue #12 sorry end AXLE
sorrySteps 1 and 3 of the proof sketch are library calls. Mathlib's ODE.PicardLindelof and ODE.Gronwall are complete, maintained, and well-documented. Step 2 — producing the scalar inequality from the radial equation — needs a bound on the coupling term. That bound is the content of Issue #12.
Mathlib.Analysis.ODE.Gronwall. The explicit $\eta$ is $2 - 3\varepsilon_0 - 1 > 0$ when $\varepsilon_0 < 1/3$. The missing input is a Lipschitz bound on the coupling that is uniform for all $t$ at which $|u| < \varepsilon_0$. Stated as an obligation: $\kappa(r,z) := \varepsilon(r-1)e^{-z}$ is $L$-Lipschitz in $r$ on $\{|r-1| < 1/3\} \times \{z \geq \log 2 - \delta\}$ for some explicit $L$. That is Issue #12.Goal: Prove kappa_lipschitz in AXLE/Coupling.lean:
lemma kappa_lipschitz (ε₀ : ℝ) (hε₀ : 0 < ε₀) (hε₀' : ε₀ < 1/3) (z_lo : ℝ) : ∃ L : ℝ≥0, ∀ r₁ r₂ : ℝ, ∀ z : ℝ, |r₁ - 1| < ε₀ → |r₂ - 1| < ε₀ → z ≥ z_lo → |κ r₁ z - κ r₂ z| ≤ L * |r₁ - r₂| := sorry
Difficulty: Low — this is really a one-line estimate in paper form: $\kappa$ is linear in $r$ with slope $\varepsilon e^{-z} \leq \varepsilon e^{-z_{\text{lo}}}$, so $L = \varepsilon e^{-z_{\text{lo}}}$ works.
Why it is in Lean: turning that one-line estimate into Lean requires the right Lipschitz.mk', some NNReal plumbing for the constant, and care with Real.exp monotonicity. A first-time Mathlib contributor can do it in an afternoon.
Contribution path:
git clone https://github.com/TOTOGT/AXLEAXLE/Coupling.lean in VS Code with the Lean 4 extension.sorry with an actual proof term.lake build to type-check; open a PR.dm3Radial to ODE.Gronwall.comparison formMathlib.Analysis.ODE.Invariant.labs/dm3_numeric.py) is the place to start: it reproduces Table 1 in one file.The mini-curso has three kinds of take-home:
spiralReturn. Depends on #12 being closed.Mathlib.Analysis.ODE.Gronwall — the comparison lemma.Mathlib.Analysis.ODE.PicardLindelof — local existence/uniqueness.Mathlib.Topology.MetricSpace.Lipschitz — LipschitzWith, LipschitzOnWith.Mathlib.Analysis.SpecialFunctions.Log.Basic — Real.log, Real.exp.spiralReturn promises — modulo Issue #12.In three hours we walked from contact 3-manifolds (S1) through Theorem 2.1 with its Gronwall basin (S2) to a Lean 4 formalisation with one open obligation (S3). The formalisation is live, public, and welcomes contributions. The sharp basin $r_\star$ is open research. The dm³ simulator runs in any browser.
kappa_lipschitz, you close the last sorry in the symmetric proof of Theorem 2.1. The operator chain $G = U\circ F\circ K\circ C$ then has one fully verified instance. That is a milestone: a GTCT theorem with a machine-checked proof. Even if the sharp basin remains open.kappa_lipschitz.Four layers, four contributions, one helix. Obrigado, Natal.