skip to main content
article

Proving that programs eventually do something good

Published:17 January 2007Publication History
Skip Abstract Section

Abstract

In recent years we have seen great progress made in the area of automatic source-level static analysis tools. However, most of today's program verification tools are limited to properties that guarantee the absence of bad events (safety properties). Until now no formal software analysis tool has provided fully automatic support for proving properties that ensure that good events eventually happen (liveness properties). In this paper we present such a tool, which handles liveness properties of large systems written in C. Liveness properties are described in an extension of the specification language used in the SDV system. We have used the tool to automatically prove critical liveness properties of Windows device drivers and found several previously unknown liveness bugs.

References

  1. Albin et al. Property specification language reference manual. Tech. Rep. Version 1.1, Accellera, 2004.Google ScholarGoogle Scholar
  2. Alpern, B., and Schneider, F. Defining liveness. Information processing letters 21 (1985), 181--185.Google ScholarGoogle Scholar
  3. Alpern, B., and Schneider, F. Recognizing safety and liveness. Distributed computing 2 (1987), 117--126.Google ScholarGoogle Scholar
  4. Armoni, R., Fix, L., Flaisher, A., Gerth, R., Ginsburg, B., Kanza, T., Landver, A., Mador-Haim, S., Singerman, E., Tiemeyer, A., Vardi, M., and Zbar, Y. The ForSpec temporal logic: A new temporal property-specification logic. In TACAS'02: Tools and Algorithms for the Construction and Analysis of Systems (2002), vol. 2280 of LNCS, Springer-Verlag, pp. 296--311. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Ball, T., Bounimova, E., Cook, B., Levin, V., Lichtenberg, J., McGarvey, C., Ondrusek, B., Rajamani, S. K., and Ustuner, A. Thorough static analysis of device drivers. In EuroSys'06: European Systems Conference (2006). Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Ball, T., and Rajamani, S. K. SLIC: A specification language for interface checking (of C). Tech. Rep. MSR-TR-2001-21, Microsoft Research, 2001.Google ScholarGoogle Scholar
  7. Berdine, J., Chawdhary, A., Cook, B., Distefano, D., and O'Hearn, P. Variance analyses from invariance analyses. In POPL'07: Principles of Programming Languages (2007), ACM Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Berdine, J., Cook, B., Distefano, D., and O'Hearn, P. Automatic termination proofs for programs with shape-shifting heaps. In CAV'06: Computer-Aided Verification (2006), vol. 4144 of LNCS, Springer-Verlag, pp. 386--400. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Biere, A., Artho, C., and Schuppan, V. Liveness checking as safety checking. In FMICS'02: Formal Methods for Industrial Critical Systems (2002), vol. 66(2) of ENTCS.Google ScholarGoogle ScholarCross RefCross Ref
  10. Bradley, A., Manna, Z., and Sipma, H. Linear ranking with reachability. In CAV'05: Computer-Aided Verification (2005), vol. 3576 of LNCS, Springer-Verlag, pp. 491--504. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Bradley, A., Manna, Z., and Sipma, H. Termination of polynomial programs. In VMCAI'05: Verification, Model Checking, and Abstract Interpretation (2005), vol. 3385 of LNCS, Springer-Verlag, pp. 113--129. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Colón, M. A., and Uribe, T. E. Generating finite-state abstractions of reactive systems using decision procedures. In CAV 98: Computer-Aided Verification (1998), vol. 1427 of LNCS, Springer-Verlag, pp. 293--304. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Cook, B., Podelski, A., and Rybalchenko, A. Abstraction refinement for termination. In SAS'05: Static Analysis Symposium (2005), vol. 3672 of LNCS, Springer-Verlag, pp. 87--101. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Cook, B., Podelski, A., and Rybalchenko, A. Termination proofs for systems code. In PLDI'06: Programming Language Design and Implementation (2006), ACM Press, pp. 415--426. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Cook, B., Podelski, A., and Rybalchenko, A. Terminator: Beyond safety. In CAV'06: Computer-Aided Verification (2006), vol. 4144 of LNCS, Springer-Verlag, pp. 415--418. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Corbett, J., Dwyer, M., Hatcliff, J., Pasareanu, C., Robby, Laubach, S., and Zheng, H. Bandera: Extracting finite-state models from Java source code. In ICSE'00: Int. Conf. on Software Engineering (2000), IEEE Press, pp. 439--448. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Cousot, P. Proving program invariance and termination by parametric abstraction, Lagrangian relaxation and semidefinite programming. In VMCAI'05: Verification, Model Checking, and Abstract Interpretation (2005), vol. 3385 of LNCS, Springer-Verlag, pp. 1--24. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Dwyer, M. B., Avrunin, G. S., and Corbett, J. C. Patterns in property specifications for finite-state verification. In ICSE'99: Int. Conf. on Software Engineering (1999), IEEE Press, pp. 411--420. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Floyd, R. W. Assigning meanings to programs. In Mathematical Aspects of Computer Science (1967), J. T. Schwartz, Ed., vol. 19 of Proceedings of Symposia in Applied Mathematics, American Mathematical Society, pp. 19--32.Google ScholarGoogle Scholar
  20. Graf, S., and Saïdi, H. Construction of abstract state graphs with PVS. In CAV 97: Computer-Aided Verification (1997), vol. 1254 of LNCS, Springer-Verlag, pp. 72--83. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Henzinger, T., Jhala, R., Majumdar, R., and Sutre, G. Lazy abstraction. In POPL'02: Principles of Programming Languages (2002), ACM Press, pp. 58--70. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Holzmann, G. J. The model checker SPIN. IEEE Transactions on Software Engineering 23, 5 (1997), 279--295. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Kesten, Y., Pnueli, A., and Raviv, L. Algorithmic verification of linear temporal logic specifications. In ICALP'98: Int. Colloq. on Automata, Languages and Programming (1998), vol. 1443 of LNCS, Springer-Verlag, pp. 1--16. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Kurshan, R. Computer Aided Verification of Coordinating Processes. Princeton Univ. Press, 1994. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Manna, Z., and Pnueli, A. The Temporal Logic of Reactive and Concurrent Systems: Specification. Springer-Verlag, Berlin, 1992. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Microsoft Corporation. Windows Static Driver Verifier. Available at www.microsoft.com/whdc/devtools/tools/SDV.mspx, July 2006.Google ScholarGoogle Scholar
  27. Pnueli, A. The temporal logic of programs. In Proc. 18th IEEE Symp. on Foundation of Computer Science (1977), pp. 46--57.Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Pnueli, A., Podelski, A., and Rybalchenko, A. Separating fairness and well-foundedness for the analysis of fair discrete systems. In TACAS'05: Tools and Algorithms for the Construction and Analysis of Systems (2005), vol. 3440 of LNCS, Springer-Verlag, pp. 124--139. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Podelski, A., and Rybalchenko, A. A complete method for the synthesis of linear ranking functions. In VMCAI'04: Verification, Model Checking, and Abstract Interpretation (2004), vol. 2937 of LNCS, Springer-Verlag, pp. 239--251.Google ScholarGoogle Scholar
  30. Podelski, A., and Rybalchenko, A. Transition invariants. In LICS'04: Logic in Computer Science (2004), LNCS, IEEE Press, pp. 32--41. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Vardi, M. Verification of concurrent programs---the automata-theoretic framework. Annals of Pure and Applied Logic 51/ (1991), 79--98.Google ScholarGoogle ScholarCross RefCross Ref
  32. Vardi, M., and Wolper, P. Reasoning about infinite computations. Information and Computation 115, 1 (1994), 1--37. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. Visser, W., Havelund, K., Brat, G., Park, S., and Lerda, F. Model checking programs. Automated Software Engineering Journal 10, 2 (2003). Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Proving that programs eventually do something good

              Recommendations

              Comments

              Login options

              Check if you have access through your login credentials or your institution to get full access on this article.

              Sign in

              Full Access

              • Published in

                cover image ACM SIGPLAN Notices
                ACM SIGPLAN Notices  Volume 42, Issue 1
                Proceedings of the 2007 POPL Conference
                January 2007
                379 pages
                ISSN:0362-1340
                EISSN:1558-1160
                DOI:10.1145/1190215
                Issue’s Table of Contents
                • cover image ACM Conferences
                  POPL '07: Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
                  January 2007
                  400 pages
                  ISBN:1595935754
                  DOI:10.1145/1190216

                Copyright © 2007 ACM

                Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

                Publisher

                Association for Computing Machinery

                New York, NY, United States

                Publication History

                • Published: 17 January 2007

                Check for updates

                Qualifiers

                • article

              PDF Format

              View or Download as a PDF file.

              PDF

              eReader

              View online with eReader.

              eReader