generated from amazon-archives/__template_Apache-2.0
-
Notifications
You must be signed in to change notification settings - Fork 23
Open
Description
Consider the following code:
procedure f()
modifies x, y
ensures x == y ==> old(x) != old(y)
{
if x != y {
x := y;
} else {
x := y + 1;
}
}
Unfortunately, we encode old() as an application of "old" operator to the argument.
Hence, it should be provable in lambda that x == y ==> old(x) == old(y), so the procedure above would theoretically able to prove false.
To fix this, we shouldn't use operator application to describe the old value of variables.
Metadata
Metadata
Assignees
Labels
No labels