Abstract
In this paper I report on my experience on developing two SMT-based software model checking techniques and show—through comparison with rival state-of-the-art software model checkers—that SMT solvers are key to the effectiveness and scalability of software model checking.
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Armando, A., Benerecetti, M., Carotenuto, D., Mantovani, J., Spica, P.: The EUREKA tool for software model checking. In: Stirewalt, R.E.K., Egyed, A., Fischer, B. (eds.) ASE, pp. 541–542. ACM, New York (2007)
Armando, A., Benerecetti, M., Mantovani, J.: Abstraction refinement of linear programs with arrays. In: Grumberg, O., Huth, M. (eds.) TACAS 2007. LNCS, vol. 4424, pp. 373–388. Springer, Heidelberg (2007)
Armando, A., Castellini, C., Mantovani, J.: Software model checking using linear constraints. In: Davies, J., Schulte, W., Barnett, M. (eds.) ICFEM 2004. LNCS, vol. 3308, pp. 209–223. Springer, Heidelberg (2004)
Armando, A., Mantovani, J., Platania, L.: Bounded Model Checking of Software using SMT Solvers instead of SAT Solvers. In: Valmari, A. (ed.) SPIN 2006. LNCS, vol. 3925, pp. 146–162. Springer, Heidelberg (2006)
Armando, A., Mantovani, J., Platania, L.: Bounded Model Checking of Software using SMT Solvers instead of SAT Solvers. International Journal on Software Tools for Technology Transfer (STTT) 11(1), 69–83 (2009)
Barrett, C., Berezin, S.: CVC Lite: A new implementation of the cooperating validity checker. In: Alur, R., Peled, D.A. (eds.) CAV 2004. LNCS, vol. 3114, pp. 515–518. Springer, Heidelberg (2004)
Ball, T., Bounimova, E., Cook, B., Levin, V., Lichtenberg, J., McGarvey, C., Ondrusek, B., Rajamani, S.K., Ustuner, A.: Thorough static analysis of device drivers. In: EuroSys 2006: Proceedings of the 2006 EuroSys conference, pp. 73–85. ACM Press, New York (2006)
Bellman, R.E.: On a Routing Problem. Quarterly of applied mathematics 16, 87–90 (1958)
Bultan, T., Gerber, R., Pugh, W.: Model-checking concurrent systems with unbounded integer variables: symbolic representations, approximations, and experimental results. ACM Transactions on Programming Languages and Systems 21(4), 747–789 (1999)
Black, P.E.: Gray code, in dictionary of algorithms and data structures (2005), http://www.nist.gov/dads/HTML/graycode.html
Ball, T., Rajamani, S.K.: Bebop: A symbolic model checker for boolean programs. In: Havelund, K., Penix, J., Visser, W. (eds.) SPIN 2000. LNCS, vol. 1885, pp. 113–130. Springer, Heidelberg (2000)
Ball, T., Rajamani, S.K.: Automatically validating temporal safety properties of interfaces. In: Dwyer, M.B. (ed.) SPIN 2001. LNCS, vol. 2057, pp. 103–122. Springer, Heidelberg (2001)
Cousot, P., Cousot, R.: Abstract interpretation: A unified lattice model for static analysis of programs by construction or approximation of fixpoints. In: POPL, Los Angeles, USA, pp. 238–252. ACM, New York (1977)
Cytron, R., Ferrante, J., Rosen, B.K., Wegman, M.N., Zadeck, F.K.: An efficient method of computing static single assignment form. In: Proceedings of POPL (ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages), pp. 25–35. ACM, New York (1989)
Clarke, E., Kroening, D., Sharygina, N., Yorav, K.: SATABS: SAT-based predicate abstraction for ANSI-C. In: Halbwachs, N., Zuck, L.D. (eds.) TACAS 2005. LNCS, vol. 3440, pp. 570–574. Springer, Heidelberg (2005)
Clarke, E.: Model Checking. MIT Press, Boston (2000)
Collavizza, H., Rueher, M.: Exploration of the capabilities of constraint programming for software verification. In: Hermanns, H., Palsberg, J. (eds.) TACAS 2006. LNCS, vol. 3920, pp. 182–196. Springer, Heidelberg (2006)
Detlefs, D.L., Nelson, G., Saxe, J.B.: Simplify: a Theorem Prover for Program Checking. Technical Report 148, HP Labs (2003)
Flanagan, C.: Software model checking via iterative abstraction refinement of constraint logic queries. In: CP+CV 2004 (2004)
Flanagan, C., Leino, K.R.M., Lillibridge, M., Nelson, G., Saxe, J.B., Stata, R.: Extended static checking for java. In: PLDI 2002: Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation, pp. 234–245. ACM Press, New York (2002)
Gates, B.: Keynote address at WinHEC 2002 (2002), http://www.microsoft.com/presspass/exec/billg/speeches/2002/04-18winhec.aspx
Henzinger, T.A., Jhala, R., Majumdar, R., Sutre, G.: Lazy abstraction. In: POPL, Portland, USA, pp. 58–70. ACM, New York (2002)
Ivanicic, F., Shlyakhter, I., Gupta, A., Ganai, M.K.: Model checking c programs using f-soft. In: ICCD 2005: Proceedings of the 2005 International Conference on Computer Design, Washington, DC, USA, pp. 297–308. IEEE Computer Society, Los Alamitos (2005)
Kroening, D., Clarke, E., Yorav, K.: Behavioral consistency of C and Verilog programs using bounded model checking. In: Proc. of DAC 2003, Anaheim, USA, pp. 368–371. ACM Press, New York (2003)
Knuth, D.: The Art of Computer Programming, Volume 3: Sorting and Searching, vol. 3. Addison-Wesley, Reading (1997)
Sebastiani, R.: Lazy satisability modulo theories. JSAT 3(3-4), 141–224 (2007)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2009 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Armando, A. (2009). Building SMT-Based Software Model Checkers: An Experience Report. In: Ghilardi, S., Sebastiani, R. (eds) Frontiers of Combining Systems. FroCoS 2009. Lecture Notes in Computer Science(), vol 5749. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-04222-5_1
Download citation
DOI: https://doi.org/10.1007/978-3-642-04222-5_1
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-04221-8
Online ISBN: 978-3-642-04222-5
eBook Packages: Computer ScienceComputer Science (R0)