E020: Compare pi(x) to li(x) numerically¶
Tags: number-theory, quantitative-exploration, visualization
See: Valid Tags.
Highlights¶
This is a thin wrapper that follows the standard experiment template and delegates the actual computation to :mod:
mathxlab.experiments.prime_suite.Writes reproducible artifacts (
params.json,report.md, and figures).Designed to surface patterns and “looks-true-until-it-breaks” behavior.
Goal¶
This is a thin wrapper that follows the standard experiment template and delegates the actual computation to :mod:mathxlab.experiments.prime_suite.
Background (quick refresher)¶
Research question¶
Which prime-related claim, heuristic, or algorithm breaks first under a clean, controlled computational sweep, and what does the smallest or clearest counterexample (or deviation) look like?
Why this qualifies as a mathematical experiment¶
Finite procedure: run a bounded search / sweep with recorded parameters.
Observable(s): counts, gaps, residues, runtime scaling, or first counterexample witnesses.
Parameter space: vary bounds (and sometimes algorithmic choices).
Outcome: plots/tables + “witness objects” for failures.
Reproducibility: outputs saved to
out/e020/with a parameter snapshot.
Experiment design¶
Computation: bounded enumeration / sampling with explicit limits.
Outputs: figures and a short
report.mdsummarizing what was found.Artifacts written:
figures/fig_*.pngparams.jsonreport.md
How to run¶
make run EXP=e020
or:
uv run python -m mathxlab.experiments.e020
Notes / pitfalls¶
“No counterexample found” only means “none found within the configured bounds”.
For probabilistic tests (when used), treat outcomes as evidence, not proof.
Extensions¶
Increase bounds and rerun (recording runtime and memory).
Compare alternative heuristics or algorithms on the same parameter grid.
Turn found deviations into new, tighter conjectures.
Published run snapshot¶
If this experiment is included in the docs gallery, include the published snapshot (report + params).
Reproduce:
make run EXP=e020
Parameters¶
n_max:
3000000step:
2000
Notes¶
li(x) is defined by an integral of 1/log t and often tracks \(\pi(x)\) more closely than \(x/\log(x)\).
Here we use a coarse trapezoidal approximation (good enough for a visual experiment).
params.json (snapshot)
{
"n_max": 3000000,
"step": 2000
}
References¶
See References.