Skip to main content
Log in

Predicate Abstraction of ANSI-C Programs Using SAT

  • Published:
Formal Methods in System Design Aims and scope Submit manuscript

Abstract

Predicate abstraction is a major method for verification of software. However, the generation of the abstract Boolean program from the set of predicates and the original program suffers from an exponential number of theorem prover calls as well as from soundness issues. This paper presents a novel technique that uses an efficient SAT solver for generating the abstract transition relations of ANSI-C programs. The SAT-based approach computes a more precise and safe abstraction compared to existing predicate abstraction techniques.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

References

  1. T. Ball, R. Majumdar, T. Millstein, and S. Rajamani, "Automatic predicate abstraction of C programs," in SIGPLAN Conference on Programming Language Design and Implementation, 2001, pp. 203–213.

  2. T. Ball and S. Rajamani, "Boolean programs: A model and process for software analysis," Technical Report 2000–14, Microsoft Research.

  3. T. Ball and S.K. Rajamani, "Automatically validating temporal safety properties of interfaces," in The 8th International SPIN Workshop on Model Checking of Software, 2001, LNCS Vol. 2057, pp. 103–122.

    Google Scholar 

  4. S. Bensalem, Y. Lakhnech, and S. Owre, "Computing abstractions of infinite state systems compositionally and automatically," in A.J. Hu and M.Y. Vardi (Eds.), Computer–Aided Verification, CAV '98, Vol. 1427, Vancouver, Canada, 1998, pp. 319–331.

  5. BOOP. http://boop.sourceforge.net/.

  6. G. Brat, K. Havelund, S. Park, and W. Visser, "Java PathFinder–A second generation of a Java model checker," in Workshop on Advances in Verification, Chicago, Illinois, 2000, pp. 130–135.

  7. S. Chaki, E. Clarke, A. Groce, S. Jha, and H. Veith, "Modular verification of software components in C," in Proceedings of the 25th International Conference on Software Engineering (ICSE), 2003, pp. 385–395.

  8. S. Chaki, E. Clarke, A. Groce, and O. Strichman, "Predicate abstraction with minimum predicates," in Advanced Research Working Conference on Correct Hardware Design and Verification Methods (CHARME), 2003.

  9. E. Clarke, O. Grumberg, S. Jha, Y. Lu, and V.H., "Counterexample–guided abstraction refinement," in Computer Aided Verification, 2000, pp. 154–169.

  10. E. Clarke, O. Grumberg, and D. Long, “Model checking and abstraction,” in Principle of Programming Languages, 1992.

  11. E. Clarke, O. Grumberg, and D. Peled, Model Checking, MIT Press, 1999.

  12. E. Clarke, M. Talupur, and D. Wang, "SAT based predicate abstraction for hardware verification," in Sixth International Conference on Theory and Applications of Satisfiability Testing, 2003.

  13. M. Colon and T. Uribe, "Generating finite–state abstractions of reactive systems using decision procedures," in Computer Aided Verification, 1998, pp. 293–304.

  14. P. Cousot and R. Cousot, "Abstract interpretation: A unified lattice model for static analysis of programs by construction or approximation of fixpoints," in Principles of Programming Languages, POPL '77, 1977, pp. 238–252.

  15. D.W. Currie, A.J. Hu, S. Rajan, and M. Fujita, "Automatic formal verification of DSP software," in 37th ACM/IEEE Design Automation Conference, 2000, pp. 130–135.

  16. D. Dams, R. Gerth, and O. Grumberg, "Abstract interpretation of reactive systems," ACM Transactions on Programming Languages and Systems (TOPLAS), Vol. 19, No. 2, 1997.

  17. S. Das and D. Dill, "Successive approximation of abstract transition relations," in 16th Annual IEEE Symposium on Logic in Computer Science (LICS), 2001.

  18. D. Detlefs, G. Nelson, and J.B. Saxe, "Simplify: A theorem prover for program checking," Technical Report HPL–2003–148, HP Labs, 2003.

  19. Digital Signature Standard, "Secure hash standard (FIPS 180–1)," National Institute of Standards and Technology, 1995.

  20. S. Graf and H. Saidi, "Construction of abstract state graphs with PVS," in O. Grumberg (Ed.), Proc. 9th INternational Conference on Computer Aided Verification (CAV'97), Vol. 1254, 1997, pp. 72–83.

  21. D. Gries and G. Levin, "Assignment and procedure call proof rules," ACM Transactions on Programming Languages and Systems (TOPLAS), Vol. 2, No. 4, pp. 564–579, 1980.

    Google Scholar 

  22. A. Gupta, Z. Yang, P. Ashar, and A. Gupta, "SAT–based image computation with application in reachability analysis," in Formal Methods in Computer–Aided Design (FMCAD), 2000, pp. 354–372.

  23. T.A. Henzinger, R. Jhala, R. Majumdar, and G. Sutre, "Lazy abstraction," in Symposium on Principles of Programming Languages, 2002, pp. 58–70.

  24. Y. Kesten and A. Pnueli, "Control and data abstraction: Cornerstones of the practical formal verification," Software Tools and Technology Transfer, Vol. 2, No. 4, pp. 328–342, 2000.

    Google Scholar 

  25. D. Kroening, E. Clarke, and K. Yorav, "Behavioral consistency of C and Verilog programs using bounded model checking," in 40th Desgin Automation Conference, 2003, pp. 368–371.

  26. D. Kroening, E. Clarke, and K. Yorav, "Behavioral consistency of C and verilog programs using bounded model checking," Technical Report CMU–CS–03–126, Carnegie Mellon University, 2003.

  27. R. Kurshan, Computer–Aided Verification of Coordinating Processes: The Automata–Theoretic Approach, Princeton University Press, 1994.

    Google Scholar 

  28. S.K. Lahiri, R.E. Bryant, and B. Cook, "A symbolic approach to predicate abstraction," in W.A. Hunt and F. Somenzi (Eds.), Computer–Aided Verification (CAV), 2003, pp. 141–153.

  29. C. Loiseaux, S. Graf, J. Sifakis, A. Bouajjani, and S. Bensalem, "Property preserving abstractions for the verification of concurrent systems," Formal Methods in System Design, Vol. 6, pp. 11–45, 1995.

    Google Scholar 

  30. K. McMillan, "Applying SAT methods in unbounded symbolic model checking," in 14th Conference on Computer Aided Verification, 2002, pp. 250–264.

  31. M.W. Moskewicz, C.F. Madigan, Y. Zhao, L. Zhang, and S. Malik, "Chaff: Engineering an efficient SAT solver," in Proceedings of the 38th Design Automation Conference (DAC'01), 2001, pp. 530–535.

  32. D. Plaisted, "Method for design verification of hardware and non–hardware systems," United States Patent, 6,131,078, 2000.

  33. D. Plaisted, A. Biere, and Y. Zhu, "A satisfiability tester for quantified Boolean formulae," Journal of Discrete Applied Mathematics (DAM), in press, available online, 2003.

  34. SMV, http://www-2.cs.cmu.edu/~modelcheck/smv.html

Download references

Author information

Authors and Affiliations

Authors

Rights and permissions

Reprints and permissions

About this article

Cite this article

Clarke, E., Kroening, D., Sharygina, N. et al. Predicate Abstraction of ANSI-C Programs Using SAT. Formal Methods in System Design 25, 105–127 (2004). https://doi.org/10.1023/B:FORM.0000040025.89719.f3

Download citation

  • Issue Date:

  • DOI: https://doi.org/10.1023/B:FORM.0000040025.89719.f3

Navigation