The publication gap
The repository studied here is a public development in the Lean 4 proof assistant [1] around eight unsolved problems in number theory; the claim registry examined in this paper covers its two reviewed problems, Erdős Problems 249 and 257. All eight problems remain open. The project proves intermediate results, exact reformulations, and finite certificates around them; it does not claim a solution to any of them.
is both a language for writing mathematics precisely and a program for checking proofs. A Lean theorem has a formal statement and a proof object. Its , the small trusted part of the system, checks the proof using the file’s definitions, earlier theorems, and explicit assumptions [1][4]. Acceptance is therefore a strong conclusion about the formal statement. A person must still judge whether that statement expresses the intended mathematics and whether later prose says anything stronger.
One theorem illustrates the second task. Lean has checked a finite certificate at every integer scale . Here a is finite displayed data from which Lean can decisively verify that a particular number is not an integer. The corresponding open requirement asks for certificates beyond every fixed cutoff. Whatever the largest checked scale is, a cutoff lies beyond it, and a finite list says nothing there. The finite theorem therefore does not settle the open problem.
A later README edit can nevertheless overstate the result. By an equivalence proved in the development (Section ), certificates beyond every fixed cutoff are not merely better evidence. Their existence is equivalent to answering Problem 249 affirmatively: the totient constant is irrational. Three objects recur throughout this paper: the , certificates at every scale ; the , certificates beyond every cutoff; and the between the open requirement and the irrationality. Lean has checked the first and the third; no Lean theorem carries the first to the second, and proving that implication would settle the problem. An edit that presents the finite cases as completing the open requirement therefore asserts, in English, exactly the bridge the development does not contain; in substance it announces a solution to an open problem. Every Lean proof remains valid under that edit, because the README is not part of any proof. No program in the repository decides whether a line of English has the same meaning as a formal statement. Lean acceptance therefore does not verify the public description.
The design joins five file-and-workflow parts: Lean source, the
maintainer-reviewed claim record, authored public documents, generated
indexes and summaries, and the release program and
continuous-integration workflow. An additional mathematical index helps
a reviewer find relevant formal statements, but it has no authority of
its own. The repository keeps a in docs/claims.json. For
each selected result the record states the public wording, its status,
the named Lean theorems or definitions that support it (Lean calls such
named items ), the bounded domain it covers, and the stronger conclusion
the record marks as open. A release checker,
scripts/check_release.py, then
verifies that the recorded relationships still hold across the Lean
source, the record itself, the authored public pages, and the generated
files. The record covers only , meaning claims entered into it, not
every line of prose in the repository; software cannot preserve a
relationship it was never pointed at, and Section shows this limit
operating in practice. The shortest accurate summary of the division of
labour is:
Lean checks the formal proofs. A maintainer reviews what those proofs mean and how they may be described. The release machinery checks that the recorded relationships remain intact before a release.
| Contribution | Evidence in this paper | Not established |
|---|---|---|
| Preserve a selected, human-reviewed relation between a formal result and public wording. | One implemented claim record, separate proof and release jobs, and one historical escaped edit rejected after registration. |
Correct semantic interpretation, complete discovery of claim-bearing prose, a detection rate, independent review, or transfer to another project. |
Section separates human review from automatic checking; Section follows one theorem into its public record; and Sections – state what the checks establish, examine the escaped edit, and delimit reuse. Readers focused on the release design may skip the calculation in Sections –.
The release workflow
Read the upper half of Figure from left to right. A mathematician first reads the Lean source and records the approved public wording and its limit in the claim record. A separate mathematical index helps the reviewer find formal statements, but it is only a generated navigation view and has no authority over the claim. Authored public documents use the reviewed wording; generated views merely reorganise source records. The dashed arrows show the two human judgements. The lower half is automated: each job runs on its own fresh copy. The decision is only whether both jobs pass.
Once a person has compared a formal theorem with its public wording, a program can preserve the resulting decision about names, files, wording, and limits. It cannot decide whether the decision was correct. The workflow does not technically force a second independent mathematician: one maintainer can edit the Lean statement, record, and prose together so that every comparison agrees with the same mistake.
The two automated jobs answer different questions.
lake build checks the formal statements and proofs; it
never reads the README. python3 scripts/check_release.py
compares the recorded relationships among source, record, public pages,
and generated files; it does not run Lean. The workflow in
.github/workflows/lean.yml runs them as two separate jobs
and begins each from a fresh checkout [2]. A checker error stops the program,
and the workflow treats that exit as a failing job. A pass proves no
mathematics, and publication remains a human decision.
Generated views are rebuilt rather than edited and create no new
mathematics. The complete file map, ownership table, and maintenance
commands live in ARCHITECTURE.md;
this paper gives only what this argument needs.
One claim from Lean theorem to public page
We now follow one result from Lean source to public page. We begin with its public meaning, not its internal name:
Lean has checked a finite certificate at every lcm-diagonal scale . The registered open requirement asks for certificates beyond every fixed cutoff. This finite interval does not settle it.
What the certificates are for
Erdős Problem 249 asks whether the totient constant is [3], meaning that it is not for any integers and with . Here is Euler’s totient function: counts the integers from to sharing no factor greater than with . The following exact equivalence explains why the certificates matter. Multiplying by makes its first terms integral; write for the remaining rescaled tail. Thus differs from by an integer. Put . It differs from by an integer. For , the factor is a nonzero integer, so an integral would force to be rational. Conversely, every rational number has an eventually repeating binary expansion, the base-2 analogue of a repeating decimal. Thus some makes integral for every sufficiently large . Lean checks the exact equivalence: For fixed and , Lean proves exactly when a certificate exists at a finite depth . Its integer calculation approximates with error at most . The certificate checks that the residue modulo lies strictly between and , outside both bands compatible with an integral value. The omitted infinite tail is thus accounted for by an explicit bound. The claim record calls this a . We use the shorter word : it proves only that this particular tail difference is not an integer.
The scales of the finite theorem compress this two-parameter requirement to one. The diagonal is the least common multiple of : the smallest positive integer divisible by every integer in that list. It is therefore divisible by every candidate period up to . If were rational, its binary digits would have a period after a position . For , one has and , so rationality would make integral; a diagonal certificate rules this out. The development proves the reduction exact: certificates along the diagonal beyond every fixed cutoff are equivalent to the full two-parameter requirement, and therefore, through the chain above, to the irrationality itself. Certificates on a finite list, however long, are not.
Writing for “a certificate exists at scale ”, the two statements then read: The boundary between them is a matter of logical form, not of scale. The bound 82, 820, or any other fixed bound stands in the same relation to the open requirement: a larger cutoff still exists. No finite interval implies the second statement without a theorem that produces new witnesses. In particular, no certificate at , and no cofinal supply, is claimed. This is the boundary an edit can silently delete.
The formal evidence
The historical module deposits certificates at 28 prime-power breakpoints through . Because is constant between breakpoints, its combined theorem already covers every . The later module adds the remaining finite arithmetic and proves : for every , there is a checking depth and a certificate at period and position . The claim record names six supporting declarations across the two Lean libraries.
Lean’s is the small trusted program that checks every accepted proof.
These finite certificate proofs use decide, which evaluates
a finite proposition and supplies a proof term for the kernel . Separately, proves the
exact tail-difference, pointwise-certificate, and diagonal equivalences,
ending at . The default lake build compiles the libraries
rooted at and , including the module that proves the
theorem.
What “coverage” means here
The word needs an object. This project separately tracks which named Lean items exist, where readers can find them, which statements a person has described, and which descriptions were approved for public use. Those are inventory, navigation, interpretation, and public-claim coverage; none implies the next. Lean calls a named theorem or definition a . Indexing every declaration is not understanding every theorem, and understanding every theorem would still not find every sentence that mentions one. Dated inventory counts belong in Appendix ; they are navigation facts, not a result.
The reviewed record
The quoted record entry contains four names specific to this
repository. A is the certificate defined in Section . The entry
abbreviates least common multiple as “lcm”, so its are the values
.
The are the periods 1 through 8, each handled by one explicit
certificate. A is the same calculation at a fixed period, position, and
depth, isolated in another Lean file and checked by
decide.
Table shows the substance of the corresponding entry in
docs/claims.json, ordered as a reader meets it: what is
claimed, where it stops, what remains open, then the supporting
machinery. The entry also records an exact source line for each
declaration; those coordinates are omitted from the table.
| Field | Content |
|---|---|
| Public statement | “Lean checks every lcm-diagonal scale and the listed finite shards. The historical 28 deposits through already covered because the lcm is constant between prime powers.” |
Bounded domain |
Listed small periods, every , and the fixed parameters of each finite shard; no or cofinal claim. |
Remaining open |
A link to the registered open requirement : produce a certified witness beyond every fixed cutoff. |
Status |
: Lean checked the stated finite inputs. |
Supporting declarations |
Six named Lean theorems with recorded
modules and source lines, ending in
exists_diagonalKill_le_82. |
Claim identifier |
certified_kill_instances |
The table records rather than explains the claim. Its public statement, bounded domain, remaining-open link, and status record a human judgement about meaning. Under the proved equivalence, the remaining-open field is essential: without it, the entry no longer separates the finite theorem from an answer to Problem 249. The identifier and source lines instead help software find the entry and may be refreshed when code moves.
No field establishes that the English is faithful to Lean. The maintainer read the final theorem, judged that the wording claims the listed scales and no more, and confirmed that the unbounded requirement remains open. The record stores that judgement, not its justification. Review asks whether wording is faithful; authorisation decides what the project publishes. One maintainer performed both here. A later change to either theorem or wording reopens the review; automatic checks can only preserve the decision that was recorded.
What the checker verifies here
For this claim, scripts/check_release.py verifies a
finite list of relationships. Declaration names must remain near their
recorded source locations, and all checked Lean source must byte-match
the saved revision. The limitation clause must remain on each registered
public page, and generated views must equal a fresh rebuild. These tests
establish presence, identity, and proximity, not implication. Lean
checks the theorem; the release program checks the recorded description
around it; a person remains responsible for the claim that the two say
the same thing.
What the checks establish
The word “verification” is easy to overread here. Four separate questions are involved. Did Lean accept the formal statements and proofs? Did a maintainer record a judgement that selected public wording describes them within stated limits? Do the configured structural comparisons pass at this revision? Did continuous integration run the configured jobs on that revision and report success? Each question needs different evidence. A yes to one does not settle the others.
When both jobs pass, Lean has accepted the proofs and each configured structural comparison has passed. This does not repeat the maintainer’s review, establish that the review was correct, or show that every consequential claim was registered. Table states what each layer can and cannot establish. Keeping the layers separate prevents the single word “verified” from making their combined guarantee sound stronger than it is.
| Layer | What it can establish | What it cannot establish |
|---|---|---|
| Lean build and kernel | The written formal statements are proved from their imported definitions and assumptions, using the recorded Lean version and dependencies. | That a formal statement is the one the author intended, or that any English description of it is faithful. |
Maintainer review |
A recorded judgement that a named formal statement has the intended meaning and selected public wording describes it within stated limits. | That Lean accepts the proofs; that every important claim was registered; or that the review was independent or correct. |
Release checker |
That recorded names, source lines, fields, links, required wording, Lean files, and generated files satisfy the declared rules; that prohibited proof shortcuts are absent; and that deliberately wrong examples still fail. | What unregistered prose means; whether the record is complete; or whether the human judgements it preserves are correct. |
Continuous integration |
That each job ran on its own fresh copy of the uploaded revision and exited successfully. | Independent mathematical approval; anything beyond what the two jobs themselves establish. |
Instantiated on the worked example, the source proves the finite theorem and equivalence, not the open requirement. Maintainer-reviewed wording confines the theorem to the listed scales. The release checker preserves declaration coordinates, revision agreement, the limitation clause, and rebuilt views; continuous integration reruns the jobs on fresh copies.
The limits follow the same lines. Lean cannot notice English that quietly implies the open requirement met. The recorded review does not show that every page repeating the claim was found. The checker cannot reject a paraphrase it was never given. Passing both jobs cannot make a mistaken reading of the equivalence correct.
The release checker rejects proof placeholders, project-defined
axioms, and native evaluation; ordinary decide produces a
kernel-checked proof term [4][5]. It compares reviewed sources,
rebuilds views, verifies paper hashes, and reruns selected deliberately
false examples (called in the repository). These checks preserve
recorded relationships, not mathematical meaning or unseen faults.
For a mathematical change, run lake build; review
statements, assumptions, and meaning; regenerate views; then run
python3 scripts/check_release.py. Continuous integration
reruns the two separate jobs. Prose-only edits still need human and
release review; stronger wording reopens the judgement. The repository
guide lists the full commands.
A boundary the checklist missed
The evidence comes from three different times. The historical exercise, the present post-repair test, and the later executable reconstruction answer different questions and must not be merged. Appendix identifies their files and commands.
Historical exercise.
The structured report in docs/publication_evidence.json
identifies a saved Git revision. It says that ten deliberate false edits
were applied to a separate copy one at a time and ran the release
checker, but not Lean. They covered seven configured relationship kinds,
including status, source coordinates, boundary wording, generated-file
freshness, and size budgets. The original run logs were not retained;
the file is a report, not raw output.
According to that record, nine of the ten edits were rejected. One escaped: the README clause saying that the finite cases the open requirement was changed to say that they it, asserting exactly the missing bridge to Problem 249. Lean was untouched, and the checker passed because the clause was absent from its checklist. The escape shows that a passing checker does not certify all public prose; it gives no detection rate.
Repair and present test.
The repair required the clause and added a deliberately false example, called a in the repository: it crosses a consequential public boundary while leaving every Lean proof intact. The post-repair witness accepts the current README and rejects a test copy containing the false clause. The other nine edits were not rerun against the extended checklist, so there is no post-repair aggregate result.
Later reconstruction.
The executable reconstruction preserves three original targets and uses seven documented replacements. It is a new experiment, not the missing runs.
The evidence marks a coverage boundary, not a reliability score. The edits were authored by the checker’s author; all seven relationship kinds were represented, but five of them by one edit each; and no controlled comparison with disciplined manual review was run. Reader error, ordinary use, and transfer were not measured.
Requiring a clause to be present does not detect a contradictory stronger claim elsewhere on the page. Coverage grows only when a person notices and records a relationship; selected high-risk commitments also have a negative fixture, that is, a deliberately false version which the check must reject. Coverage can also shrink: deleting a registered relationship leaves no rule requiring it, so every remaining check passes. Retiring a commitment therefore deserves the same review as creating one.
The shape of this limit is familiar from Section . A configured checklist, like a finite certificate interval, does not exhaust an open-ended domain. The comparison is only structural: prose has no equivalence theorem and no diagonal compresses it.
Three boundaries the companion papers exposed.
Three later corrections fell outside the checklist for different reasons. A kernel-checked headline in the Problem 249 note had no claim-record entry, so it carried no reviewed public status. A Problem 257 support described as open had been settled in the literature in 2019, outside the repository. A valid parity theorem was presented as a frontier until adjoining one support element was seen to remove the obstruction: the theorem was correct but its advertised significance was not. These are respectively a registration gap, stale external status, and representation-dependent significance. They are incidents, not a rate, and none is detectable by comparing recorded artefacts with one another.
Scope, reuse, and limits
The failures the design addresses.
The checks address accidental disagreement after a sound review. A declaration may move while its recorded line number stays fixed, and a generated view may be stale or hand-edited. A rewrite may remove a required limitation, a status may be upgraded, or the shipped Lean files may cease to be the reviewed ones. A check may also decay until it can no longer fail. In each case, one recorded item disagrees with the others, which a mechanical comparison can detect.
The failures it does not address.
Three failure modes remain outside the design. a paraphrase can strengthen a claim without touching a registered anchor, and a contradiction, misleading emphasis, or new public document can escape for the same reason. Requiring one clause to be present does not require the page to agree with it. a maintainer can alter source, record, and prose together, so every comparison agrees. If the certificate definition were weakened while the record and prose were updated to match, all checks could pass although the public reading of the equivalence was wrong. if the original judgement was wrong, the machinery preserves the mistake. It checks persistence, not the quality of the judgement.
The checked boundary.
Only listed relationships are checked. The repository calls their set its (historically, its “assurance perimeter”); in ordinary terms, this is simply the boundary of the checklist. A recorded commitment inside the boundary triggers an automatic check. Outside it, the checker is silent. The name must not suggest more: choosing what belongs on the checklist remains a human judgement, and a passing check does not make the contents true. This repository gives priority to headline results and to wording whose accidental strengthening would change the project’s public status, as the deleted boundary clause did under the equivalence. If the same claim appears on several pages, the checker sees only the appearances named in the record.
Several narrower limits belong to this implementation rather than to the general pattern. One maintainer performs both review and authorisation; the checker tolerates a theorem name within three lines of its recorded location; some prose checks require exact wording; the exercise used one edit per relationship type; and the original logs were not retained.
What another project could reuse.
The file formats are incidental. The pattern applies whenever a checked formal result sits beside a tempting stronger public statement: finitely many cases beside a statement about all cases; a conditional theorem beside its unproved hypothesis; one implication beside an alleged equivalence; or a theorem under assumptions beside an unconditional headline. What transfers is the reviewed boundary between the exact formal result and its nearest unproved strengthening.
The minimum obligations are concrete. Each selected public claim needs its own wording, named formal evidence, exact source version, scope, assumptions, and explicit stronger non-conclusions. Human mathematical review must be distinguished from automatic consistency checking. Every generated public view needs a named builder. Proof checking and publication checking must be separate and able to fail independently. Every recorded relationship needs a specified mechanical check; selected high-risk boundaries should also have a deliberately false example which that check rejects. Finally, the project must describe its selection as selective rather than complete.
What is not established.
The architecture does not establish a solution to either Erdős problem; that a formal statement is the statement the author intended; that software understood any unregistered prose; that the record is complete; that one maintainer’s review is independent or adequate; or that the design transfers to other projects with its behaviour intact. A large number of passing comparisons measure none of those things. What a passing workflow establishes is narrower: the configured jobs ran on the named revision, Lean accepted the formal proofs, and every configured structural comparison passed. This paper is an architecture note with one bounded case study and three naturalistic incidents, not an empirical evaluation of the design. A credible evaluation would need review records naming reviewer and revision, wrong edits authored by someone other than the checker’s author, and only then a comparison with ordinary review on the same changes. None of those stages exists here, and this paper claims none of them.
Conclusion
Lean has checked certificates at every lcm-diagonal scale . It has not checked a certificate at or an unbounded supply. The development proves that an unbounded supply would settle Problem 249, so the difference cannot be dismissed as cautious wording around essentially the same result. Problems 249 and 257 remain open.
The systems result is correspondingly modest and useful. A mathematician can record the exact public wording authorised by a formal result, the result’s range, and its nearest open strengthening. A release program can then reject later edits which violate those recorded relationships. In this repository a deliberately false test case—called a negative fixture in the repository—now catches the strengthening that historically escaped.
This repository sits in the middle, not at the end, of the longer mathematical process. Tao separates proof generation, verification, exposition, publication and community acceptance, digestion, and eventual canonicalisation [17]. The claim record addresses one transition in that process: it preserves a reviewed boundary between a checked formal statement and its public exposition. The reasoning papers separately name the hard remaining bridge, failed routes, and scope-limited no-go results, so an expert can see where attention is still required rather than receiving a uniformly polished list of theorems. Those records can make the work a candidate for expert digestion. They are not evidence that other mathematicians have accepted or absorbed it, and the repository cannot declare its own results canonical.
The failure supplies the governing limit. The registered checking boundary is only as wide as the relationships someone chose to record; in ordinary language, the checker cannot enforce an item absent from its checklist. Retiring an item is therefore as consequential as adding one and deserves the same review. The GSN development guidance makes the corresponding repair concrete: if evidence does not cover the lowest claim, state the claim that it actually supports, weaken or bound that claim, and revisit the claims above it [16]. The method preserves selected mathematical judgements after they have been made. It does not make those judgements correct, discover every public claim, provide a detection rate, or establish transfer to another repository. A passing workflow says only that Lean accepted the formal proofs and the configured structural comparisons passed on the named revision.
Reproducibility
Declaration of generative AI use.
Every word of this manuscript was generated by agents based on large language models operating within Will Cook’s private research system for artificial intelligence. The formal proofs and repository software were likewise drafted and revised by the agents through that system under Cook’s direction. Cook set the objectives and acceptance criteria, selected and reviewed the public claims, and approved the published version. Cook assumes responsibility for the accuracy, interpretation, and presentation of the work. Generative systems are production tools, not authors, and supply no independent authority. That boundary is the subject of this paper as well as a condition of it: the checker described in Section tests recorded relationships a person selected, so passing it does not make generated wording faithful. The author selected, reviewed, and authorised the public claim-to-declaration mappings, and remains responsible for connecting the proofs to public wording.
The paper inventory, , records source and PDF cryptographic hashes
and validation commands. The evidence file for Section , , records the
protocol, outcomes, and limitations. The reconstruction file, ,
specifies the ten edits. The script checks that each edit applies once
(--verify-operators) and, by default, runs all ten in a
copy of the saved evaluation version (--all). For an edit
whose exact original target was not preserved, the file names a fixed
replacement. The original raw outputs were not retained; the
reconstruction does not claim to be them.
The papers build with Tectonic or standard LaTeX via
make -C paper. The tracked root PDF is the shipped copy,
and the inventory checks its file hash. These identities name artefacts;
they do not interpret them.
References
L. de Moura and S. Ullrich, , in , Lecture Notes in Computer Science 12699, 2021, pp. 625–635, DOI.
GitHub, , documentation, accessed 18 July 2026.
P. Erdős and R. L. Graham, , Monographies de L’Enseignement Mathématique 28, L’Enseignement Mathématique, Université de Genève, 1980, p. 61, scan.
Lean project, , documentation, accessed 18 July 2026.
Lean project, , documentation, accessed 18 July 2026.
P. Massot, , plasTeX plugin for Lean formalisation blueprints, 2020, software repository, accessed 18 July 2026.
T. Zhu, P. Monticone, S. Welleck, and J. Avigad, , in , LIPIcs 382, 2026, pp. 25:1–25:16, DOI.
B. Yanahama and A. Sannai, , 2026, arXiv:2604.16347.
N. Garg, , 2026, arXiv:2606.13306.
P. S. Ammanamanchi, S. Bhat, and S. Biderman, , in , PMLR 306, 2026, arXiv:2606.29493.
A. D. Brucker and B. Wolff, , in , Lecture Notes in Computer Science 11724, 2019, pp. 275–293, DOI.
T. Kiecker, J. A. Sparka, M. Reuter, A. Ziegler, and L. Grunske, , 3 (FSE), Article FSE168, July 2026, 23 pages, DOI.
R. A. DeMillo, R. J. Lipton, and F. G. Sayward, , IEEE Computer 11(4), 1978, pp. 34–41, DOI.
Y. Jia and M. Harman, , IEEE Transactions on Software Engineering 37(5), 2011, pp. 649–678, DOI.
O. C. Z. Gotel and A. C. W. Finkelstein, , in , 1994, pp. 94–101, DOI.
SCSC Assurance Case Working Group (ACWG), , SCSC-141C, May 2021, standard.
T. Tao, , preprint, 2026, arXiv:2608.16753.