Repository navigation
Bump pestka and pestka-wasm: check the export as Susz - #351
Merged
Merged
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Collaborator
|
I think it's fair game to do a conversion in the run step. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Both entries now convert the test's ndjson to Susz first, then Pestka checks the Susz file. Susz is a binary form of lean4export's output. It holds the same records with no text to parse, and the proofs used by only one theorem sit in blocks of their own. Pestka leaves those blocks as bytes until it checks the theorem.
The conversion is done by
susz, a small converter written in Rust. Both steps run inside the entry's command, so the converter's time, memory and instructions are counted too.The converter doesn't have to be trusted. A Susz file holds structure only, with no hashes and no precomputed facts. Pestka checks every reference, count and offset itself and rejects a file that doesn't add up. Only Pestka can say accepted. If the converter finds the export invalid, the entry rejects it. If it can't convert the export, the entry declines.
Pestka also has a converter of its own, written in Aver, which writes the same bytes. It is slower, so the entries use
susz.mathlib, on an M2 Pro:
pestkatodaypestkawith Susz (pack + check, 4 workers)pestka-wasmtodaypestka-wasmwith SuszBoth entries give the expected verdict on every Arena test we have locally: the 183 small tests (in file order and grouped by namespace), the 29
perf/tests and the 7 large ones, mathlib included.pestkanow runs on four workers (threads: 4). That's how a user runs it, and it is why the wall time drops so much. Over all threads the instruction count is about what it was.The Arena gives checkers ndjson, and a converter step inside
runseemed within the rules; if you'd rather entries didn't do that, Pestka still reads ndjson directly.