Verification code and data for the Krein research programme: inverse spectral analysis of discrete Krein–Stieltjes strings.
Each paper of the programme lives in its own directory and carries its own manifest naming, script by script, which statement of the paper that script certifies. Shared tools and cached data sit at the top level, so every paper uses the same routines rather than a private copy.
satz1/ An Exact Derivative Calculus for Discrete Krein Strings
paper (.tex/.pdf), manifest, all verification scripts,
run logs in satz1/logs/
run_all.sh runs and checks every script (see below)
lib/ chain_lab.py RKPW reconstruction of Jacobi data
string_lab.py Jacobi data -> string (l, m)
data/ zeros_cache_1500.json ordinates 1..1500, 45 digits
zprime_cache_1500.json the corresponding |zeta'(rho)|
The two cached lists are inputs to one numerical benchmark. Nothing in the mathematics of the papers depends on them; see Scope below.
Python 3.8 or later. The exact certification scripts need only sympy
and the standard library. The one benchmark additionally needs mpmath
and numpy (≥ 1.17, for default_rng).
pip install sympy mpmath numpy
./run_all.sh # all exact certificates, about 3 minutes
./run_all.sh --full # plus the numerical benchmark, about 10 minutesrun_all.sh runs every script and checks its output against the expected
result; it exits with 0 only if all checks pass. Output goes to runlogs/.
Individual scripts can also be run directly, from any working directory:
paths are resolved relative to the repository, not to the shell.
For the exact scripts the standard is that every reported difference is
exactly zero in rational arithmetic — not small. The benchmark instead
reproduces the numbers printed in §5 of the paper: its gradient figures run
in mpmath and match exactly, while the Hessian deviation is partly
assembled in double precision, so its last digit may vary with the
numpy/BLAS build (the effect §5 describes).
On systems with glibc older than 2.28 (e.g. CentOS 7), install numpy with
pip install --only-binary=:all: numpy; current numpy wheels require a
newer glibc, and without the flag pip attempts a source build.
satz1/satz1_checks_MANIFEST.md is the authoritative map from script to
certified statement, including expected output and runtime. Logs of a
complete run in a fresh environment are in satz1/logs/.
The paper is archived on Zenodo under 10.5281/zenodo.22847188; that identifier resolves to the current version. Please cite the paper rather than this repository.
The formal results are statements about finite positive discrete measures on the half-line with distinct positive nodes. They use no hypothesis about the distribution of the Riemann zeros, and no claim concerning the Riemann Hypothesis is made or implied anywhere in this repository. One numerical benchmark consumes a concrete list of ordinates purely as a reproducible supply of distinct positive numbers; the definitions and proofs do not contain that list, and nothing is offered as evidence for or against any conjecture about it.
The code — all scripts in satz1/, the tools in lib/, and run_all.sh —
is released under the MIT License; see LICENSE.
The paper (satz1/*.tex, satz1/*.pdf) and the cached data in data/
are released under the Creative Commons Attribution 4.0 International
License (CC BY 4.0),
matching the Zenodo record.