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

Implement arbitrary pre-conditions for Crucible-based LLVM verification #196

Closed
atomb opened this issue May 2, 2017 · 2 comments
Closed
Labels
priority High-priority issues type: enhancement Issues describing an improvement to an existing feature or capability

Comments

@atomb
Copy link
Contributor

atomb commented May 2, 2017

The llvm_assert command from the LSS-based verification interface is missing for the Crucible-based interface. For a number of the examples we have (ZUC, SHA-384), this functionality is necessary to avoid out-of-bounds array accesses.

@atomb atomb added type: enhancement Issues describing an improvement to an existing feature or capability priority High-priority issues labels May 2, 2017
@brianhuffman
Copy link
Contributor

As a workaround, you can use crucible_equal to encode arbitrary preconditions:

let crucible_assert (t : Term) =
  crucible_equal (crucible_term {{ if t then 0x01 else 0x00 }}) (crucible_term {{ 0x01 }});

But we should definitely add a native crucible_assert; it should be easy to implement.

@atomb
Copy link
Contributor Author

atomb commented Jun 1, 2017

There is now a crucible_precond command for this purpose. A crucible_postcond command also exists.

@atomb atomb closed this as completed Jun 1, 2017
brianhuffman pushed a commit that referenced this issue Apr 26, 2021
Do the right thing when encountering 0-width bitvectors in the What4 backend
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
priority High-priority issues type: enhancement Issues describing an improvement to an existing feature or capability
Projects
None yet
Development

No branches or pull requests

2 participants