Closed icmccorm closed 2 years ago
This was fixed by ensuring that variables in loop invariants are also targeted for renaming. See line #65-68 in Replacer.scala
case loop: IR.While => {
loop.condition = replace(loop.condition, m)
loop.invariant = replace(loop.invariant, m)
}
The following loop invariants are used in composite.c0:
The variable
current
is renamed during translation in multiple locations except in the predicate instancetree(current)
in the invariant, leading to verification errors when a partial, imprecise specification is created that has everything precise except for the outer invariant, where the expressions0 <= i && i <= stressCaptured
are replaced by a?
.