ACM Home Page
Please provide us with feedback. Feedback
Finding bugs efficiently with a SAT solver
Full text PdfPdf (395 KB)
Source
Foundations of Software Engineering archive
Proceedings of the the 6th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering table of contents
Dubrovnik, Croatia
SESSION: Scaling-up static analysis table of contents
Pages: 195 - 204  
Year of Publication: 2007
ISBN:978-1-59593-811-4
Authors
Julian Dolby  IBM T. J. Watson Research Center, Yorktown Heights, NY
Mandana Vaziri  IBM T. J. Watson Research Center, Yorktown Heights, NY
Frank Tip  IBM T. J. Watson Research Center, Yorktown Heights, NY
Sponsors
ACM: Association for Computing Machinery
SIGSOFT: ACM Special Interest Group on Software Engineering
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 12,   Downloads (12 Months): 106,   Citation Count: 4
Additional Information:

abstract   references   cited by   index terms   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/1287624.1287653
What is a DOI?

ABSTRACT

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.


REFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

 
1
Spin model checker. http://spinroot.com/spin/whatispin.html.
2
 
3
4
 
5
6
7
8
9
 
10
Java equals() and compareto() contracts. http://java.sun.com/j2se/1.5.0/docs/api/java/lang/package-summary.html.
11
 
12
Grammatech, I. Codesurfer. http://www.grammatech.com/products/codesurfer/index.html.
 
13
 
14
 
15
16
17
18
19
20
 
21
Khurshid, S., Pasareanu, C., and Visser, W. Generalized symbolic execution for model checking and testing. In TACAS'03: Proceedings of the International Conference on Tools and Algorithms for the Construction and Analysis of Systems (2003).
 
22
 
23
 
24
 
25
Millett, L. I., and Teitelbaum, T. Slicing Promela and its applications to model checking. In Proceedings of the 4th International SPIN Workshop (1998).
 
26
 
27
Tip, F. A survey of program slicing techniques. Journal of Programming Languages 3, 3 (1995), 121--189.
 
28
Torlak, E., and Jackson, D. Kodkod: A relational model finder. In TACAS'07: Proceedings of the International Conference on Tools and Algorithms for the Construction and Analysis of Systems (2007).
 
29
 
30
 
31
Vaziri, M., and Jackson, D. Checking properties of heap-manipulating procedures with a constraint solver. In TACAS'03: Proceedings of the International Conference on Tools and Algorithms for the Construction and Analysis of Systems (2003).
 
32
Vaziri, M., Tip, F., Fink, S., and Dolby, J. Declarative object identity using relation types. In ECOOP'07: Proceedings of the European Conference on Object-Oriented Programming (2007), pp. 54--78.
 
33
 
34
Watson Libraries for Analysis (WALA). http://wala.sourceforge.net/.
35


Collaborative Colleagues:
Julian Dolby: colleagues
Mandana Vaziri: colleagues
Frank Tip: colleagues