Software Model Checking via IC3 [chapter]

Alessandro Cimatti, Alberto Griggio
2012 Lecture Notes in Computer Science  
IC3 is a recently proposed verification technique for the analysis of sequential circuits. IC3 incrementally overapproximates the state space, refuting potential violations to the property at hand by constructing relative inductive blocking clauses. The algorithm relies on aggressive use of Boolean satisfiability (SAT) techniques, and has demonstrated impressive effectiveness. In this paper, we present the first investigation of IC3 in the setting of software verification. We first generalize
more » ... from SAT to Satisfiability Modulo Theories (SMT), thus enabling the direct analysis of programs after an encoding in form of symbolic transition systems. Second, to leverage the Control-Flow Graph (CFG) of the program being analyzed, we adapt the "linear" search style of IC3 to a treelike search. Third, we cast this approach in the framework of lazy abstraction with interpolants, and optimize it by using interpolants extracted from proofs, when useful. The experimental results demonstrate the great potential of IC3, and the effectiveness of the proposed optimizations.
doi:10.1007/978-3-642-31424-7_23 fatcat:a2bgpg6v5zbgdpnn3lrbq4kgli