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

Add support for traits #44

Merged
merged 151 commits into from
Nov 10, 2023
Merged

Add support for traits #44

merged 151 commits into from
Nov 10, 2023

Conversation

sonmarcho
Copy link
Member

@sonmarcho sonmarcho commented Nov 9, 2023

This is the companion PR of AeneasVerif/charon#48, which describes most of the modifications (see below for the modifications specific to Aeneas). This PR also subsumes #35.

In order to properly handle associated types in the presence of type constraints (e.g., where Foo::U = U32) we implemented a normalization mechanism (in AssociatedTypes.ml). This mechanism operates on the LLBC types. As we would need a similar mechanism to type-check the generated pure code, we temporarily deactivated the type checking sanity checks from PureTypeCheck.ml.

Because Charon removed many "assumed" definitions, we implemented a mechanism to catch definitions (like Vec, Option, core::mem::replace, etc.) that we want to map to definitions from the standard library. For now, the definitions we catch are hardcoded in ExtractBuiltin.ml, but it would be pretty easy to give the possibility of listing them in a file which would be parsed by Aeneas (this is future work).

In order to make the tests work, we also substantially modified and extended the current standard libraries.

@sonmarcho sonmarcho merged commit 587f1eb into main Nov 10, 2023
4 checks passed
@sonmarcho sonmarcho deleted the son_traits_types branch November 10, 2023 17:21
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.

2 participants