K. Rustan M. Leino and Francesco Logozzo
This paper describes a sound technique that combines the precision of theorem proving with the loop-invariant inference of abstract interpretation. The loop-invariant computations are invoked on demand when the need for a stronger loop invariant arises, which allows a gradual increase in the level of precision used by the abstract interpreter. The technique generates loop invariants that are specific to a subset of a program's executions, achieving a dynamic and automatic form of value-based trace partitioning. Finally, the technique can be incorporated into a lemmas-on-demand theorem prover, where the loop-invariant inference happens after the generation of verification conditions.
In Proceedings of the the 3rd Asian Symposium on Programming Languages and Systems (APLAS'05)
Publisher Springer Verlag
All copyrights reserved by Springer 2007.