Finding bugs efficiently with a SAT solver
Finding bugs efficiently with a SAT solver
复制标题
使用 SAT 求解器有效查找错误
DOI:
10.1145/1287624.1287653
复制
发表时间:
2007
期刊:
影响因子:
--
通讯作者:
F. Tip
中科院分区:
文献类型:
--
作者:
Julian T Dolby;M. Vaziri;F. Tip
We present an approach for checking code against rich specifications, based on existing work that consists of encoding the program in a relational logic and using a constraint solver to find specification violations. We improve the efficiency of this approach with a new encoding of the program that effectively slices it at the logical level with respect to the specification. We also present new encodings for integer values and arrays, enabling the verification of realistic fragments of code that manipulate both. Our technique can handle integers of much larger ranges than previously possible, and permits large sparse arrays to be handled efficiently.
We present a soundness proof for our slicing algorithm and a general condition under which relational formulae may be sliced. We implemented our technique and evaluated it by checking data structure invariants of several classes taken from the Java Collections Framework. We also checked for violations of Java's equality contract in a variety of open-source programs, and found several bugs.