Description
Sometimes the simplifyUpdate1/simplifyUpdate2 rules ignore updates, specifically to LoctionVaribales. This seems to be caused by preceding pruning.
In my case something like { ... || heapBefore_foo:=heap || ... }heapBefore_foo was "simplified" to heapBefore_foo instead of heap.
Reproducible
always
Steps to reproduce
- load the
foo()-Method from Updates.java into KeY
- execute Full Auto Pilot→ the proof is closed
- prune the whole proof tree
- execute Full Auto Pilot again → the proof is not closed
- apply One Step Simplification on the remaining goal (Validity of the assertion)
→ the resulting formula contains self.modelMethod()@heapBefore_foo, which should be self.modelMethod() – the update heapBefore_foo:=heap should have been applied, but was ignored
- save the proof in its current state
- relaod the previously saved proof and go to the remaining goal
→ now the formula correctly contains self.modelMethod()
Updates.java.zip
Description
Sometimes the simplifyUpdate1/simplifyUpdate2 rules ignore updates, specifically to
LoctionVaribales. This seems to be caused by preceding pruning.In my case something like
{ ... || heapBefore_foo:=heap || ... }heapBefore_foowas "simplified" toheapBefore_fooinstead ofheap.Reproducible
always
Steps to reproduce
foo()-Method fromUpdates.javainto KeY→ the resulting formula contains
self.modelMethod()@heapBefore_foo, which should beself.modelMethod()– the updateheapBefore_foo:=heapshould have been applied, but was ignored→ now the formula correctly contains
self.modelMethod()Updates.java.zip