Fix proof-test coverage for computed-value verifier failures - #26
Fix proof-test coverage for computed-value verifier failures#26saulshanabrook wants to merge 2 commits into
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Run ID: ⛔ Files ignored due to path filters (4)
📒 Files selected for processing (3)
📝 WalkthroughWalkthroughProof support detection now enables term encoding during resolution. File-based tests skip known proof-testing failures, validate their panic messages, and update proof snapshot coverage. The Herbie workload description now separates workload checks from proof-testing coverage. ChangesProof-testing behavior
Estimated code review effort: 2 (Simple) | ~10 minutes Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
a0bfa12 to
98449b5
Compare
98449b5 to
cd3c3af
Compare
Summary
TypeInfoBigRatverifier reproducer and an equivalent positivei64controlWhy the tests missed Herbie
The file harness previously resolved a complete source file with a normal e-graph and then checked every command against the final
TypeInfo. Information introduced insidepush/popscopes had already been discarded, so proof-compatible files such as Herbie were classified as unsupported and their proof-testing trials were never generated.The implementation change is intentionally small: enable the existing term-encoding path while probing support and return whether that resolver succeeds. That path already performs the live-scope proof-support checks. Across all current core and experimental fixtures, its classification matches the intended proof-testing inventory.
Remaining verifier bug
Once selected, Herbie reaches an existing fail-closed verifier error. Primitive BigRat values reconstruct as application-shaped terms, while the encoder gives the result a reflexive
Fiatproof that the checker accepts only for literals or values established by globals.This PR does not weaken the verifier to accept arbitrary application-shaped
Fiatproofs. A narrow future repair could preserve authenticated sort information and allow only canonical BigInt/BigRat representations that exactly round-trip through their sort normalizers. A general repair would need a checkedComputecertificate carrying the concrete overloaded primitive signature, typed arguments, child proof evidence, and claimed result, followed by deterministic validator replay.That broader change is difficult because the current proof conversion discards typed wrappers, primitive names are overloaded, child provenance must be authenticated, and the new evidence would have to survive proof printing, simplification, child traversal, and term remapping.
PR #22 comparison
PR #22 fixes a distinct desugared Math scoped-global replay bug by changing global representation and making witness-row extraction deterministic. Its head still fails both the reduced BigRat case and full Herbie with the same
InvalidFiatclass, so those broader changes are not ported here.Validation
make proof-testsmake checkgit diff --checkSummary by CodeRabbit
Documentation
Bug Fixes
Tests