Combining k‑Induction with Continuously‑Refined Invariants

Dirk Beyer


Matthias Dangl



Philipp Wendler


Bounded model checking (BMC) is a well-known and successful technique for finding bugs in software. k‑induction is an approach to extend BMC-based approaches from falsification to verification. Automatically generated auxiliary invariants can be used to strengthen the induction hypothesis. We improve this approach and further increase effectiveness and efficiency in the following way: we start with light-weight invariants and refine these invariants continuously during the analysis. We present and evaluate an implementation of our approach in the open-source verification-framework CPAchecker. Our experiments show that combining k‑induction with continuously-refined invariants significantly increases effectiveness and efficiency, and outperforms all existing implementations of k‑induction-based software verification in terms of successful verification results.


The supplementary archive contains all data from our experiments. The following files are in this archive:


The result tables of the figures in the paper are available here:

You can click on the cells in the status columns of the CPAchecker configurations in these tables to see their output. Due to their size, the log files of CBMC and ESBMC are not included in the online version, but the data, including the tables with clickable cells, are available in the downloadable supplementary archive.