Loop Invariants on Demand

  • Rustan Leino ,
  • Francesco Logozzo

Proceedings of the the 3rd Asian Symposium on Programming Languages and Systems (APLAS'05) |

Published by Springer Verlag

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.