Add heterogenous equality to Mr. Solver for SHA512 example #1670
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.
This PR gets
round_16_80 |= round_16_80_spec
from the SHA512 example working by primarily adding heterogeneous equality to Mr. Solver. It also makes a few other changes, but instead of listing them here, I broke each change into its own commit. Each commit should be self-explanatory.I'm not totally sure about the interface choices I made in
SMT.hs
in 45de464 (e.g.mrProveEq
vs.mrProveRel
, using aBool
to indicate heterogeneous equality), so that's definitely worth taking a look at. It's worth saying that I went formrProveRel
instead of something likemrProveHetEq
because we will likely eventually want to add a parameter to this function which additionally lets the user give a custom relation for function terms (for lifetimes).