Skip to content

[Termination Plugin] Extend Expr Support#618

Merged
ArquintL merged 7 commits into
masterfrom
extend-expr-support-in-termination-plugin
Oct 24, 2022
Merged

[Termination Plugin] Extend Expr Support#618
ArquintL merged 7 commits into
masterfrom
extend-expr-support-in-termination-plugin

Conversation

@ArquintL

@ArquintL ArquintL commented Oct 18, 2022

Copy link
Copy Markdown
Member

The termination plugin uses transformExp to turn preconditions, function bodies, and postconditions into a statement.
Each statement is then used as the body of a new method to prove termination for the corresponding expression.
So far, the transformer was not able to handle wildcard permission amounts and forall & existential quantifiers. Additionally, the support for set and multiset-related operations was limited.

This PR extends the transformer to handle these expressions as well.
The transformation for forall quantifiers performs a forall introduction by showing that the expression terminates for an arbitrary choice of quantified variable values.
In the case of existential quantifiers, we obtain the witness and thus perform existential elimination

@ArquintL ArquintL changed the title adds support for forall quantifiers and wildcard permission amounts t… [Termination Plugin] Extend Expr Support Oct 18, 2022
@ArquintL ArquintL marked this pull request as draft October 18, 2022 15:42
@ArquintL ArquintL marked this pull request as ready for review October 19, 2022 08:43
@ArquintL ArquintL requested review from jcp19 and marcoeilers October 19, 2022 08:43
@ArquintL

Copy link
Copy Markdown
Member Author

@jcp19 This PR adds all expressions that occur in Gobra's unit tests as well as my own project. Might be worth double-checking with Verified SCION whether anything is still missing

@jcp19

jcp19 commented Oct 19, 2022

Copy link
Copy Markdown
Contributor

@ArquintL seems to work with SCION

@marcoeilers marcoeilers left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

One comment/question about default or unsupported cases, the rest LGTM.

@ArquintL

Copy link
Copy Markdown
Member Author

@marcoeilers would you mind taking another look please?

@ArquintL ArquintL merged commit 291fb99 into master Oct 24, 2022
@ArquintL ArquintL deleted the extend-expr-support-in-termination-plugin branch October 24, 2022 14:33
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.

3 participants