Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Lean verification code generator #7180

Draft
wants to merge 50 commits into
base: main
Choose a base branch
from

Conversation

yoavseginer
Copy link

When a libfunc test is run and the Lean generator is turned on, Lean code is generated which can be used to verify the correctness (soundness and completeness) of the libfunc. The Lean code is generated into files in a separate verification directory.

All code for the Lean generator is behind the 'lean' compilation feature. Moreover, having compiled the cairo compiler with the 'lean' feature, one must also set the CAIRO_GEN_LEAN environment flag to generate the Lean code (this may be redundant and can easily be removed).

The Lean generator code has two main components: one (mainly inside the Casm builder) collects auxiliary information during the build process, which is later needed by the Lean generator. The generation of the Lean code then takes place after the test was completed, and is implemented in a separate crate. Some small changes had to be introduced to the compiler and test code to allow the auxiliary information collected in the builder to reach the Lean generator.

Finally, a few libfunc tests were added (in u256 and u512). The tests modify existing tests by not destroying the U128MulGuarantees returned by the core libfunc. In this way the Lean proof only verifies the core functionality.

yoavseginer and others added 30 commits January 28, 2025 23:26
@reviewable-StarkWare
Copy link

This change is Reviewable

@yoavseginer yoavseginer marked this pull request as draft January 29, 2025 09:30
@yoavseginer
Copy link
Author

I see that some checks fail, something about a mismatch between the command number and crate number. I indeed added a new crate, so I probably should have added something additional somewhere, but I don't know where.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants