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

Mr Solver support for monadic Cryptol specs #1609

Merged
merged 16 commits into from
Mar 11, 2022
Merged

Conversation

eddywestbrook
Copy link
Contributor

This PR makes it possible for Mr Solver to work on specifications extracted from Cryptol. This required the following changes:

  • Added the cryptol_add_prim and cryptol_add_prim_type SAW script commands for specifying the translations of Cryptol primitives and primitive types, respectively
  • Changed monadification to add a macro for the either elimination function;
  • Changed monadification so that functions not in the macro table with semi-pure types get monadified to themselves;
  • Changed the implementation of assertFiniteM in the CryptolM SAW core module to use a Maybe type;
  • Added support to Mr Solver for maybe eliminators over isFinite proofs;
  • Added the mrNormOpenTerm function to Mr Solver and changed Mr Solver to use it instead of scWhnf to normalize terms with data type assumptions; and
  • Put all these pieces together in a new test in linked_list_mr_solver.saw that uses Mr Solver to prove that is_elem refines a cryptol version of its specification

Eddy Westbrook added 14 commits March 9, 2022 15:51
…s, where the translation of the types were not getting applied
…an beta normalizing the entire output term
…eing called is not unfolded during normalization; also added a special case for normalizing multiArgFixM
… refines a cryptol version of its specification
@eddywestbrook eddywestbrook added the MRSolver Issues specifically related to the Mr. Solver sub-system label Mar 11, 2022
Copy link
Contributor

@m-yac m-yac left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@m-yac m-yac added the ready-to-merge If at least one person approves this PR, automatically merge it when CI finishes successfully. label Mar 11, 2022
@m-yac m-yac merged commit 2ae9aca into master Mar 11, 2022
@mergify mergify bot deleted the cryptol-abstract-types branch March 11, 2022 19:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
MRSolver Issues specifically related to the Mr. Solver sub-system ready-to-merge If at least one person approves this PR, automatically merge it when CI finishes successfully.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants