viperproject / viperproject/silver
Resources can be used on left of implication in assumes
Nobody has claimed this yet.
- Dominant language
- Scala
- Stars
- 100
- Forks
- 53
- Avg merge
- 8h 10m
- Merged PRs (30d)
- 2
Description
Impure expressions are typically not allowed on the LHS of an implication, except in an assume :
field val: Int
method foo(r: Ref)
requires acc(r.val) ==> true
ensures acc(r.val) ==> true
{
assume acc(r.val) ==> true
assert acc(r.val) ==> true
inhale acc(r.val) ==> true
exhale acc(r.val) ==> true
}
In the above example, all uses of acc(r.val) are not allowed except for assume acc(r.val) ==> true. Isn't this a bit inconsistent, especially if you cannot assert something you have assumed?
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reproducing the issue's example and compare how requires, ensures, assume, assert, inhale, and exhale handle acc(r.val) on the left of implication. Determine the intended consistency rule for these constructs, then verify that the resulting behavior is covered by the relevant existing verification tests or language checks.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- scala
- Domain
- compilers
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100