Safety Verification and Refutation by k-invariants and k-induction (extended version)
This addresses a fundamental usability issue for software verification users by combining strengths of established techniques into one tool.
The paper tackles the usability problem of needing multiple verification tools for different tasks by introducing kIkI, a unified algorithm that generalizes abstract interpretation, bounded model checking, and k-induction, enabling a single-tool approach to software verification.
Most software verification tools can be classified into one of a number of established families, each of which has their own focus and strengths. For example, concrete counterexample generation in model checking, invariant inference in abstract interpretation and completeness via annotation for deductive verification. This creates a significant and fundamental usability problem as users may have to learn and use one technique to find potential problems but then need an entirely different one to show that they have been fixed. This paper presents a single, unified algorithm kIkI, which strictly generalises abstract interpretation, bounded model checking and k-induction. This not only combines the strengths of these techniques but allows them to interact and reinforce each other, giving a `single-tool' approach to verification.