The following program should return the error that acc(x.next) is missing
field next: Ref
predicate list(x: Ref){
x != null ==> acc(x.next) && list(x.next)
}
method reverse(x: Ref)
requires list(x)
ensures list(x)
method test(x: Ref)
{
reverse(x.next)
}
Carbon does this correctly. Silicon (for me) returns the error that acc(x.next.next) is missing (both the IDE and the master branch).
Strangely, if I reverify the file in the IDE (so with a cache I assume) the error message is correct, it only fails on the first verification attempt.
The following program should return the error that
acc(x.next)is missingCarbon does this correctly. Silicon (for me) returns the error that
acc(x.next.next)is missing (both the IDE and the master branch).Strangely, if I reverify the file in the IDE (so with a cache I assume) the error message is correct, it only fails on the first verification attempt.