Skip to content

Remove three-phase exhale: No reordering of conjuncts during exhale.#411

Merged
gauravpartha merged 3 commits into
masterfrom
exhale_no_reordering
Apr 14, 2022
Merged

Remove three-phase exhale: No reordering of conjuncts during exhale.#411
gauravpartha merged 3 commits into
masterfrom
exhale_no_reordering

Conversation

@gauravpartha

Copy link
Copy Markdown
Contributor

Currently, Carbon potentially reorders conjuncts when exhaling an assertion. For example, Carbon verifies inhale acc(x.f); exhale acc(x.f,wildcard) && acc(x.f,1/2), because Carbon first exhales acc(x.f,1/2) and then exhales acc(x.f,wildcard). The technique behind this multiphase exhale is described in "Abstract Read Permissions: Fractional Permissions without the Fractions (S. Heule and K. R. M. Leino and P. Müller and A. J. Summers; VMCAI 2013)" and "Constraint Semantics for Abstract Read Permissions Formal Techniques for Java-like Programs (J. Boyland and P. Müller and M. Schwerhoff and A. J. Summers; FTfJP 2014)".

The Viper team has decided to drop this reordering feature (which was never implemented in Silicon). This pull request gets rid of the reordering technique implemented in Carbon during an exhale.

@gauravpartha gauravpartha merged commit 053b1e2 into master Apr 14, 2022
@gauravpartha gauravpartha deleted the exhale_no_reordering branch February 21, 2023 10:44
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