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

WIP: Function axiomatization fix using uninterpreted guard function #434

Draft
wants to merge 4 commits into
base: master
Choose a base branch
from

Conversation

gauravpartha
Copy link
Contributor

The following PR implements a new function axiomatization approach (developed with @marcoeilers), where function axioms are guarded by an uninterpreted function instead of the concrete function precondition. The goal of this PR is to solve the issues with the current function axiomatization as discussed in #272.

Among things not yet covered:
* QPs in function preconditions (might need to change guard framing axiom)
* function calls appear within quantifiers (need to change free assumption to get the preconditions of the functions)
@gauravpartha
Copy link
Contributor Author

gauravpartha commented Oct 3, 2022

Still to be resolved:

  • in cases where something is inhaled or exhaled without definedness checks, because assertions have been checked to be self-framing elsewhere (specifications in method call and in verification of method itself, predicate bodies when folding and unfolding) , need to get the guard assumptions explicitly
  • Function calls within quantifiers --> need to assume guard inside a universal quantifier
  • Maybe functions with QPs in their preconditions (not sure)

@gauravpartha gauravpartha marked this pull request as draft November 11, 2022 19:29
@gauravpartha
Copy link
Contributor Author

Possible optimization that has not yet been done: If precondition does not contain permissions, then do not need an uninterpreted guard function and instead can use the same approach as before.

…me free function call assumptions during exhale of self-framing conditions (where no well-definedness check happens)
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.

1 participant