skip to main content
research-article

Making prophecies with decision predicates

Authors Info & Claims
Published:26 January 2011Publication History
Skip Abstract Section

Abstract

We describe a new algorithm for proving temporal properties expressed in LTL of infinite-state programs. Our approach takes advantage of the fact that LTL properties can often be proved more efficiently using techniques usually associated with the branching-time logic CTL than they can with native LTL algorithms. The caveat is that, in certain instances, nondeterminism in the system's transition relation can cause CTL methods to report counter examples that are spurious with respect to the original LTL formula. To address this problem we describe an algorithm that, as it attempts to apply CTL proof methods, finds and then removes problematic nondeterminism via an analysis on the potentially spurious counterexamples. Problematic nondeterminism is characterized using decision predicates, and removed using a partial, symbolic determinization procedure which introduces new prophecy variables to predict the future outcome of these choices. We demonstrate---using examples taken from the PostgreSQL database server, Apache web server, and Windows OS kernel---that our method can yield enormous performance improvements in comparison to known tools, allowing us to automatically prove properties of programs where we could not prove them before.

Skip Supplemental Material Section

Supplemental Material

36-mpeg-4.mp4

References

  1. Cadence SMV. http://www.kenmcmil.com/smv.html.Google ScholarGoogle Scholar
  2. The Z3 Theorem Prover. research.microsoft.com/projects/Z3.Google ScholarGoogle Scholar
  3. Abadi, M., and Lamport, L. The existence of refinement mappings. Theoretical Computer Science 82, 2 (1991), 253--284. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Abdulla, P. A., Jonsson, B., Nilsson, M., d'Orso, J., and Saksena, M. Regular model checking for LTL(MSO). In CAV (2004).Google ScholarGoogle Scholar
  5. Ball, T., Bounimova, E., Cook, B., Levin, V., Lichtenberg, J., McGarvey, C., Ondrusek, B., Rajamani, S., and Ustuner, A. Thorough static analysis of device drivers. ACM SIGOPS Operating Systems Review 40, 4 (2006), 85. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Bouajjani, A., Legay, A., and Wolper, P. Handling liveness properties in (ω-) regular model checking. Electronic Notes in Theoretical Computer Science 138, 3 (2005), 101--115. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Bradley, A., Manna, Z., and Sipma, H. Termination of polynomial programs. In VMCAI (2005). Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Bradley, A. R., Manna, Z., and Sipma, H. B. Linear ranking with reachability. In CAV (2005). Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Burch, J., Clarke, E., McMillan, K., Dill, D., and Hwang, L. Symbolic model checking: 10 to the 20 states and beyond. Information and Computation 98, 2 (1992). Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Clarke, E., Emerson, E., and Sistla, A. Automatic verification of finite-state concurrent systems using temporal logic specifications. TOPLAS 8, 2 (1986), 263. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Clarke, E., Grumberg, O., Jha, S., Lu, Y., and Veith, H. Counterexample-guided abstraction refinement for symbolic model checking. JACM 50, 5 (2003), 794. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Clarke, E., Grumberg, O., and Peled, D. Model checking. Springer, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Clarke, E., Jha, S., Lu, Y., and Veith, H. Tree-like counterexamples in model checking. In LICS (2002). Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Clarke, E. M., Grumberg, O., and Hamaguchi, K. Another look at LTL model checking. Form. Methods Syst. Des. 10, 1 (1997), 47--71. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Cook, B., Gotsman, A., Podelski, A., Rybalchenko, A., and Vardi, M. Y. Proving that programs eventually do something good. In POPL (2007). Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Cook, B., and Koskinen, E. Making prophecies with decision predicates. Tech. Rep. UCAM-CL-TR-789, University of Cambridge, Computer Laboratory, Jan. 2011.Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Cook, B., Koskinen, E., and Vardi, M. Branching-time reasoning for programs. Tech. Rep. UCAM-CL-TR-788, University of Cambridge, Computer Laboratory, Jan. 2011.Google ScholarGoogle Scholar
  18. Cook, B., Podelski, A., and Rybalchenko, A. Termination proofs for systems code. In PLDI (2006). Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Cousot, P., Cousot, R., Feret, J., Mauborgne, L., Miné, A., Monniaux, D., and Rival, X. The ASTREE analyzer. In ESOP (2005). Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Dutertre, B., and de Moura, L. M. A fast linear-arithmetic solver for dpll(t). In CAV (2006), T. Ball and R. B. Jones, Eds., vol. 4144 of LNCS, Springer, pp. 81--94. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Esparza, J., Kucera, A., and Schwoon, S. Model-checking LTL with regular valuations for pushdown systems. In TACS (2001). Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Fang, Y., Piterman, N., Pnueli, A., and Zuck, L. Liveness with invisible ranking. International Journal on Software Tools for Technology Transfer (STTT) 8, 3 (2006), 261--279. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Farkas, J. Uber die theorie der einfachen ungleichungen. Journal fur die Reine und Angewandte Mathematik 124 (1902), 1--27.Google ScholarGoogle Scholar
  24. Gastin, P., and Oddoux, D. Fast LTL to Büchi automata translation. In CAV (July 2001). Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Havelund, K., and Pressburger, T. Model checking Java programs using Java pathfinder. International Journal on Software Tools for Technology Transfer (STTT) 2, 4 (2000), 366--381.Google ScholarGoogle Scholar
  26. Henzinger, T. A., Jhala, R., Majumdar, R., Necula, G. C., Sutre, G., and Weimer, W. Temporal-safety proofs for systems code. In CAV (2002). Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Hobor, A., Appel, A. W., and Nardelli, F. Z. Oracle semantics for concurrent separation logic. In ESOP (2008). Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Holzmann, G. J. The model checker SPIN. IEEE Trans. Software Eng. 23, 5 (1997), 279--295. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Kwiatkowska, M., Norman, G., and Parker, D. PRISM: Probabilistic symbolic model checker. LNCS 2324 (2002), 200--204. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. Magill, S., Berdine, J., Clarke, E., and Cook, B. Arithmetic strengthening for shape analysis. LNCS 4634 (2007), 419. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Maidl, M. The common fragment of CTL and LTL. In FOCS (2000). Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. Nain, S., and Vardi, M. Branching vs. linear time: Semantical perspective. In ATVA (2007). Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. Pnueli, A. The temporal logic of programs. In 18th Annual Symposium on Foundations of Computer Science (1977), IEEE, pp. 46--57. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. Pnueli, A., and Zaks, A. PSL model checking and run-time verification via testers. In FM (2006), J. Misra, T. Nipkow, and E. Sekerinski, Eds., vol. 4085 of LNCS, Springer, pp. 573--586. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Podelski, A., and Rybalchenko, A. A Complete Method for the Synthesis of Linear Ranking Functions. LNCS (2003), 239--251.Google ScholarGoogle Scholar
  36. Podelski, A., and Rybalchenko, A. Transition invariants. In LICS (2004), pp. 32--41. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. Podelski, A., and Rybalchenko, A. ARMC: the logical choice for software model checking with abstraction refinement. In PADL (2007). Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. Qadeer, S., Sezgin, A., and Tasiran, S. Back and forth: Prophecy variables for static verification of concurrent programs. Tech. Rep. MSR-TR-2009-142, Microsoft, 2009.Google ScholarGoogle Scholar
  39. Safra, S. On the complexity of omega-automata. In SFCS (1988). Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. Sankaranarayanan, S., Sipma, H., and Manna, Z. Constraint-based linear-relations analysis. In SAS (2004).Google ScholarGoogle Scholar
  41. Schneider, K. Model checking on product structures. FMCAD (1998). Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. Schuppan, V., and Biere, A. Liveness checking as safety checking for infinite state spaces. In Workshop on Verification of Infinite-State Systems (INFINITY) (2005).Google ScholarGoogle Scholar
  43. Vardhan, A., Sen, K., Viswanathan, M., and Agha, G. Using language inference to verify Omega-regular properties. In TACAS (2005). Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. Vardi, M. Branching time vs. linear time: Final showdown. In TACAS (2001). Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. Vardi, M. Y., and Wolper, P. An automata-theoretic approach to automatic program verification (preliminary report). In LICS (1986).Google ScholarGoogle Scholar

Index Terms

  1. Making prophecies with decision predicates

                      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 46, Issue 1
                        POPL '11
                        January 2011
                        624 pages
                        ISSN:0362-1340
                        EISSN:1558-1160
                        DOI:10.1145/1925844
                        Issue’s Table of Contents
                        • cover image ACM Conferences
                          POPL '11: Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
                          January 2011
                          652 pages
                          ISBN:9781450304900
                          DOI:10.1145/1926385

                        Copyright © 2011 ACM

                        Publisher

                        Association for Computing Machinery

                        New York, NY, United States

                        Publication History

                        • Published: 26 January 2011

                        Check for updates

                        Qualifiers

                        • research-article

                      PDF Format

                      View or Download as a PDF file.

                      PDF

                      eReader

                      View online with eReader.

                      eReader
                      About Cookies On This Site

                      We use cookies to ensure that we give you the best experience on our website.

                      Learn more

                      Got it!