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

Monadified Cryptol-to-SAWCore translation #1552

Merged
merged 104 commits into from
Feb 7, 2022
Merged

Conversation

eddywestbrook
Copy link
Contributor

@eddywestbrook eddywestbrook commented Jan 3, 2022

Add support for a translation from Cryptol to monadic SAWCore terms. At a high level, the idea is to replace uses of the unsound combinators fix : (a -> a) -> a and error : String -> a in the translation of cryptol to SAW core with uses of the sound monadic combinators fixM : (a -> CompM a) -> CompM a and errorM : String -> CompM a for the "computation monad" CompM. This will reduce (or maybe even eliminate!) dependence on these unsound combinators in the SAWCore logic, making it more straightforward to translate Cryptol functions into Coq. It will also allow automated proofs about some unbounded Cryptol functions, or equivalence between some unbounded Cryptol specifications and LLVM implementations.

This PR also includes initial progress on the monadic-recursive solver (Mr. Solver).

Eddy Westbrook added 30 commits July 7, 2021 10:12
… the type of a term; and applying a pi type to an argument
… updated the top-level entrypoint to be called monadify instead of monadifyTerm
…ed numAssertEqM as the monadified version of unsafeAssert applied to the Num type
…MTyTuple to just MTyPair; and changed monadifyTerm to take an optional type, which allows monadification to do inference when there is a tuple or record selector and we do not have its whole type
… argument term; reorganized the "from" and "to" operations between monadification terms and OpenTerms to avoid these sorts of mistakes in the future
Eddy Westbrook and others added 23 commits October 13, 2021 17:19
…ifyName to give each uvar a distinct name; removed the case for FunBinds where we have the same function on both sides, since we do not want it to fire when we have, e.g., fixM on both sides
…tional sequence (i.e., vectors) be strict, in order to make it easier to prove things about them
@m-yac m-yac marked this pull request as ready for review February 5, 2022 01:52
@m-yac m-yac self-requested a review February 5, 2022 01:52
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

@eddywestbrook eddywestbrook merged commit 56ae651 into master Feb 7, 2022
@mergify mergify bot deleted the feature/monadification branch February 7, 2022 22:02
@m-yac m-yac added the MRSolver Issues specifically related to the Mr. Solver sub-system label Feb 24, 2022
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
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants