The proof ledger: theorems, code, tests#
The Lean development under proofs/lean/Rgmin/ pins the exact
rational facts the solvers’ termination and honesty arguments rest
on. It builds on Mathlib, so the statements are the real ones: widths
and radii over the reals, `Real.sqrt` in the boundary root rather
than a named-root hypothesis, actual limits for the termination
envelopes, and the Gram positive-semidefiniteness of the sketch as a
matrix theorem. Check it with lake exe cache get && lake build in
proofs/lean/; the cache makes Mathlib a download, not a compile.
The division of labor is deliberate. The Lean side proves the exact algebra and the budget envelopes – facts about the formulas, true in every execution. The Rust tests hold the floating-point implementation to those facts at concrete tolerances. A claim without a row in both columns is an opinion.
Theorem (Rgmin.*) |
Pins |
Code |
Rust test |
|---|---|---|---|
|
zoom trials land in the interior band |
|
|
|
bracket loses >= 10 percent per step |
|
(same) |
|
geometric width envelope, and it reaches zero |
|
(same) |
|
an accepted point strictly improves |
|
|
|
the boundary root lands on the trust sphere |
|
|
|
a boundary exit never retracts |
|
(same) |
|
negative curvature: boundary is optimal greed |
|
(same) |
|
CG step ignores preconditioner scale |
|
|
|
conjugacy weight ignores preconditioner scale |
|
|
|
tracked M-norm recurrence is scale-consistent |
|
(same) |
|
the trust radius stays positive |
|
|
|
rejections decay the radius to any floor |
|
|
|
growth is capped and never loses ground |
|
|
|
an uphill step cannot be accepted |
|
|
|
the Gram sketch is PSD, as a matrix theorem |
|
|
|
the solve’s weights are positive, damping only |
|
(same) |
The narrative behind each block lives in the explanation pages: the line search, the secant family, trust regions and Steihaug, the Nystrom preconditioner, scaled conjugate gradients.