Detecting Spurious Counterexamples Efficiently in Abstract Model Checking

Cong Tian and Zhenhua Duan

Xidian University, China

Track: Technical Research
Session: Formal Analysis
Abstraction is one of the most important strategies for dealing with the state space explosion problem in model checking. With an abstract model, the state space is largely reduced, however, a counterexample found in such a model that does not satisfy the desired property may not exist in the concrete model. Therefore, how to check whether a reported counterexample is spurious is a key problem in the abstraction-refinement loop. Particularly, there are often thousands of millions of states in systems of industrial scale, how to check spurious counterexamples in these systems practically is a significant problem. In this paper, by re-analyzing spurious counterexamples, a new formal definition of spurious path is given. Based on it, efficient algorithms for detecting spurious counterexamples are presented. By the new algorithms, when dealing with infinite counterexamples, the finite prefix to be analyzed will be polynomially shorter than the one dealt by the existing algorithm. Moreover, in practical terms, the new algorithms can naturally be parallelized that makes multi-core processors contributes more in spurious counterexample checking. In addition, by the new algorithms, the state resulting in a spurious path ({false state}) that is hidden shallower will be reported earlier. Hence, as long as a {false state} is detected, lots of iterations for detecting all the {false states} will be avoided. Experimental results show that the new algorithms perform well along with the growth of system scale.