Boole language extensions for dalek-lite benchmarks#1075
Merged
Conversation
joscoh
reviewed
May 18, 2026
Contributor
joscoh
left a comment
There was a problem hiding this comment.
Can you change the PR to target main2 and remove the comments about things being upstreamed to main?
Contributor
Author
done:) |
joscoh
previously approved these changes
May 19, 2026
shigoel
previously approved these changes
May 19, 2026
Contributor
shigoel
left a comment
There was a problem hiding this comment.
LGTM, modulo the partial functions -- won't block on that right now though
Keep upstream/main2 version — drops registerCommandSymbols/initFVarIsOp (the buggy fvarIsOp precomputation removed by fix/datatype-tester-freevar). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
auto-merge was automatically disabled
May 19, 2026 15:57
Head branch was pushed to by a user without write access
joscoh
approved these changes
May 19, 2026
shigoel
approved these changes
May 19, 2026
5 tasks
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.
Summary
Extends the Boole language pipeline with new language features, curated benchmark
targets anchored to dalek-lite (Curve25519/Ed25519), and a testing infrastructure
upgrade across all Boole seeds.
Language features
Sequence Ttype and slicing opstoCoreMonoTypehandles.Sequence _ elem → .tcons "Sequence" [elem]Verify.leanSequence.skip,Sequence.dropFirst,Sequence.subrangeSequence.empty_bv8/bv16/bv32/bv64/int— eachneeds a distinct token since 0-ary polymorphic
Sequence.emptyhas no argumentsto infer the type from
Bitvector loop variables (
for i : bvN := init to limit)for_to_byandfor_downto_bydispatch guard/step/increment toBv{N}.ULe/Add/Subwhen the loop variable is a bitvector typedecreasesannotationsfor v := init to/downto limitaccepts an optionaldecreases eclause;forwarded to the Core while-loop measure field and actively verified by cvc5
decreases eclause using Core'sexisting
Measurecategory — no new grammar category introducedmeasure_mkop; no duplicate constructsdecreasesissilently dropped with a
dbg_tracewarning pending int-based termination supportLambda abstraction and application
fun x : T => bodylowers to nested Core.absnodes(f)(x)lowers to.app () f xInline
let-block postconditionslet v := e in bodyin spec/ensures positions lowers viawithBVarExprschooseassignmentw := choose z : T :: pred(z)lowers tohavoc w; assume pred[z/w]Bitvector comparisons
<,<=,>,>=) default toBv{N}.ULt/ULe/UGt/UGeviatoBvCmpOp<s,<=s,>s,>=s) lower toBv{N}.SLt/SLe/SGt/SGeNew seeds
embedded_postcondition.lean— inline let-block inensuresmontgomery_loop_invariant.lean— relational while-loop invariant; lineararithmetic case verifies via cvc5 and
smtVCsCorrectscalar_reduce.lean— B2reduce()axiom with abstract typessha256_compact_indexed.lean— SHA-256 compact port (indexedSequenceencoding); all 19 VCs pass; loop counters use
int(faithful to Rust'susizesemantics, avoids uninterpreted cast to
Sequenceindex); remaining gaps:iterator protocol (Improve Strata DDM documentation #27), fixed-size array syntax (Add
bv1type to Strata.Boogie #25), slice types (Update copyright headers to reference both MIT and Apache 2.0 licenses. #26)Fully implemented seeds graduated from
FeatureRequests/to the main Boole testfolder:
early_return.lean,choose_operator.lean,bitvector_ops.lean,embedded_postcondition.lean.Seed test infrastructure
Replaced
#guard_msgs (drop info) inwith explicit/-- info: ... -/+#guard_msgs inacross all Boole seeds. Added(options := .quiet)uniformly.Documentation
docs/BooleBenchmarks.md: five real-world benchmark targets from dalek-litedocs/BooleFeatureRequests.md: all new seeds in inventory table,implemented features extended
By submitting this pull request, I confirm that you can use, modify, copy, and
redistribute this contribution, under the terms of your choice.