Boosting k-Induction with Continuously-Refined Invariants

  • Dirk Beyer
  • Matthias Dangl
  • Philipp Wendler
Conference paper

DOI: 10.1007/978-3-319-21690-4_42

Part of the Lecture Notes in Computer Science book series (LNCS, volume 9206)
Cite this paper as:
Beyer D., Dangl M., Wendler P. (2015) Boosting k-Induction with Continuously-Refined Invariants. In: Kroening D., Păsăreanu C. (eds) Computer Aided Verification. CAV 2015. Lecture Notes in Computer Science, vol 9206. Springer, Cham

Abstract

\(k\)-induction is a promising technique to extend bounded model checking from falsification to verification. In software verification, \(k\)-induction works only if auxiliary invariants are used to strengthen the induction hypothesis. The problem that we address is to generate such invariants (1) automatically without user-interaction, (2) efficiently such that little verification time is spent on the invariant generation, and (3) that are sufficiently strong for a \(k\)-induction proof. We boost the \(k\)-induction approach to significantly increase effectiveness and efficiency in the following way: We start in parallel to \(k\)-induction a data-flow-based invariant generator that supports dynamic precision adjustment and refine the precision of the invariant generator continuously during the analysis, such that the invariants become increasingly stronger. The \(k\)-induction engine is extended such that the invariants from the invariant generator are injected in each iteration to strengthen the hypothesis. The new method solves the above-mentioned problem because it (1) automatically chooses an invariant by step-wise refinement, (2) starts always with a lightweight invariant generation that is computationally inexpensive, and (3) refines the invariant precision more and more to inject stronger and stronger invariants into the induction system. We present and evaluate an implementation of our approach, as well as all other existing approaches, 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 verification of C programs in terms of successful results.

Copyright information

© Springer International Publishing Switzerland 2015

Authors and Affiliations

  • Dirk Beyer
    • 1
  • Matthias Dangl
    • 1
  • Philipp Wendler
    • 1
  1. 1.University of PassauPassauGermany

Personalised recommendations