Some of you helped me with a cumulative-product proof last week. Here is what it was for.
Two repositories, both public, both re-checkable with a four-line project file.
Ten cores* from five open-source libraries published by Canadian federal bodies — the National Research Council, Environment and Climate Change Canada, Statistics Canada, and ISED’s Communications Research Centre — across Mortran, C and Fortran. 169 obligations, none unproved, none justified. 50 functional contracts, 73 run-time checks, 46 termination.
Four cores for the Debian version-ordering rules, written from Policy 5.6.12 rather than from dpkg’s C. 63 obligations, none unproved, none justified. 38 functional contracts, 4 run-time, 21 termination.
Each core was proved locally, then re-proved independently on a second machine of different architecture and toolchain before it was admitted.
Solver grades, since a clean total invites the question. Run with one back end at a time: the Canadian set is not 3/3 — Z3 alone proves all 169, cvc5 alone misses one, Alt-Ergo three, and the three fragile checks are named in the README. The dpkg set is 3/3; all three provers discharge all 63 alone.
What is deliberately not proved is in both READMEs rather than left to be found. The dpkg set is the sharper example: it is not verrevcmp. No epoch/upstream/revision split, no interleaving of numeric runs, strings fixed at 64 characters. Walk’s contract pins the result when the current characters differ and does not state the all-equal case; Run_Length states its zero case and an upper bound but not that it counts the run. Both are implemented and unspecified, and the README says so.
The Ada was machine-generated by a 27B open-weight model running locally, then checked by gnatprove. The repositories say that before they say anything else. The four dpkg cores took eight rounds between them — one right first time, the others two, two and three.
I would be glad of holes being found in any of it. That is rather the point of publishing the sources rather than the numbers.
* “Core” is our own word rather than a SPARK one, and I have used it throughout, so: one package specification, small enough to prove in a single sitting, carrying the contracts for the properties it claims. Each is proved, then re-proved from the source alone on a second machine before it is recorded. You would just say “package”, and you would be right — I have kept our word because the repositories use it.