skip to main content
article

Variance analyses from invariance analyses

Published:17 January 2007Publication History
Skip Abstract Section

Abstract

An invariance assertion for a program location l is a statement that always holds at l during execution of the program. Program invariance analyses infer invariance assertions that can be useful when trying to prove safety properties. We use the term variance assertion to mean a statement that holds between any state at l and any previous state that was also at l. This paper is concerned with the development of analyses for variance assertions and their application to proving termination and liveness properties. We describe a method of constructing program variance analyses from invariance analyses. If we change the underlying invariance analysis, we get a different variance analysis. We describe several applications of the method, including variance analyses using linear arithmetic and shape analysis. Using experimental results we demonstrate that these variance analyses give rise to a new breed of termination provers which are competitive with and sometimes better than today's state-of-the-art termination provers.

References

  1. A. V. Aho, R. Sethi, and J. D. Ullman. Compilers: Priciples, Techniques, and Tools. 1986. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. A. W. Appel. Modern Compiler Implementation in ML. 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. J. Berdine, B. Cook, D. Distefano, and P. O'Hearn. Automatic termination proofs for programs with shape-shifting heaps. In CAV'06: International Conference on Computer Aided Verification, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. A. Biere, C. Artho, and V. Schuppan. Liveness checking as safety checking. In FMICS'02: Formal Methods for Industrial Critical Systems, 2002.Google ScholarGoogle ScholarCross RefCross Ref
  5. A. Bradley. Personal communication. Aaron Bradley's suggested script that iteratively applies the tools described in {7} and {6} with increasingly expensive options, June 2006.Google ScholarGoogle Scholar
  6. A. Bradley, Z. Manna, and H. Sipma. Termination of polynomial programs. In VMCAI'05: Verification, Model Checking, and Abstract Interpretation, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. A. R. Bradley, Z. Manna, and H. B. Sipma. The polyranking principle. In ICALP'05: International Colloquium on Automata, Languages and Programming, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. C. Calcagno, D. Distefano, P. O'Hearn, and H. Yang. Beyond reachability: Shape abstraction in the presence of pointer arithmetic. In SAS'06: Static Analysis Symposium, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. M. Colón and H. Sipma. Synthesis of linear ranking functions. In TACAS'01: Tools and Algorithms for the Construction and Analysis of Systems, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. M. Colón and H. Sipma. Practical methods for proving program termination. In CAV'02: International Conference on Computer Aided Verification, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. B. Cook, A. Gotsman, A. Podelski, A. Rybalchenko, and M. Vardi. Proving that programs eventually do something good. In POPL'06: Principles of Programming Languages, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. B. Cook, A. Podelski, and A. Rybalchenko. Abstraction refinement for termination. In SAS'05: Static Analysis Symposium, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. B. Cook, A. Podelski, and A. Rybalchenko. Termination proofs for systems code. In PLDI'06: Programming Language Design and Implementation, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. B. Cook, A. Podelski, and A. Rybalchenko. Terminator: Beyond safety. In CAV'06: International Conference on Computer Aided Verification, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. P. Cousot. The calculational design of a generic abstract interpreter. In M. Broy and R. Steinbrüggen, editors, Calculational System Design. 1999.Google ScholarGoogle Scholar
  16. P. Cousot. Proving program invariance and termination by parametric abstraction, Lagrangian relaxation and semidefinite programming. In VMCAI'05: Verification, Model Checking, and Abstract Interpretation, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. P. Cousot. Personal communication, 2006.Google ScholarGoogle Scholar
  18. P. Cousot and R. Cousot. Abstract interpretation: A unified lattice model for static analysis of programs by construction or approximation of fixpoints. In POPL'77: Principles of Programming Languages, 1977. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. P. Cousot and R. Cousot. Systematic design of program analysis frameworks. In POPL'79: Principles of Programming Languages, 1979. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. P. Cousot and R. Cousot. Abstract interpretation frameworks. J. Log. Comput. 2(4), pp511--547, 1992.Google ScholarGoogle ScholarCross RefCross Ref
  21. P. Cousot and R. Cousot. Modular static program analysis. In CC'02: Conference of Compiler Construction, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. P. Cousot, R. Cousot, J. Feret, L. Mauborgne, A. Miné, D. Monniaux, and X. Rival. The ASTRÉE analyzer. In ESOP'05: European Symposium on Programming, 2005.Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. P. Cousot and N. Halbwachs. Automatic discovery of linear restraints among variables of a program. In POPL'78: Principles of Programming Languages, 1978. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. D. Distefano, P. W. O'Hearn, and H. Yang. A local shape analysis based on separation logic. In TACAS'06: Tools and Algorithms for the Construction and Analysis of Systems, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. R. W. Floyd. Assigning meanings to programs. In Mathematical Aspects of Computer Science, 1967.Google ScholarGoogle ScholarCross RefCross Ref
  26. J. Giesl, R. Thiemann, P. Schneider-Kamp, and S. Falke. Automated termination proofs with AProVE. In RTA'04: Rewriting Techniques and Applications, 2004.Google ScholarGoogle ScholarCross RefCross Ref
  27. S. Graf and H. Saïdi. Construction of abstract state graphs with PVS. In CAV'97: International Conference on Computer Aided Verification, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. B. S. Gulavanii and S. K. Rajamani. Counterexample driven refinement for abstract interpretation. In TACAS'06: Tools and Algorithms for the Construction and Analysis of Systems, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. H. Jain, F. Ivancic, A. Gupta, I. Shlyakhter, and C. Wang. Using statically computed invariants inside the predicate abstraction and refinement loop. In CAV'06: International Conference on Computer Aided Verification, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. B. Jeannet. NewPolka polyhedra library. http://pop-art.inrialpes.fr/~people/bjeannet/newpolka/index.html.Google ScholarGoogle Scholar
  31. C. S. Lee, N. D. Jones, and A. M. Ben-Amram. The size-change principle for program termination. In POPL'01: Principles of Programming Languages, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. Z. Manna and A. Pnueli. Axiomatic approach to total correctness of programs. Acta Informatica, 1974.Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. L. Mauborgne and X. Rival. Trace partitioning in abstract interpretation based static analyzers. In ESOP'05: European Symposium on Programming, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. A. Miné. The Octagon abstract domain. Higher-Order and Symbolic Computation. (to appear).Google ScholarGoogle Scholar
  35. A. Pnueli. The temporal logic of programs. In 18th IEEE Symposium on Foundations of Computer Science, 1977.Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. A. Podelski and A. Rybalchenko. A complete method for the synthesis of linear ranking functions. In VMCAI'04: Verification, Model Checking, and Abstract Interpretation, 2004.Google ScholarGoogle Scholar
  37. A. Podelski and A. Rybalchenko. Transition invariants. In LICS'04: Logic in Computer Science, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. A. Podelski and A. Rybalchenko. Transition predicate abstraction and fair termination. In POPL'05: Principles of Programming Languages, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. J. C. Reynolds. The Craft of Programming. London, 1981. Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. J. C. Reynolds. Separation logic: A logic for shared mutable data structures. In LICS'02: Symposium on Logic in Computer Science, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. S. Sankaranarayanan, F. Ivancic, I. Shlyakhter, and A. Gupta. Static analysis in disjunctive numerical domains. In SAS'06: Static Analysis Symposium, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. A. Tiwari. Termination of linear programs. In CAV'04: International Conference on Computer Aided Verification, 2004.Google ScholarGoogle ScholarCross RefCross Ref
  43. M. Y. Vardi. Verification of concurrent programs: The automata-theoretic framework. Ann. Pure Appl. Logic, 51(1-2):79--98, 1991.Google ScholarGoogle ScholarCross RefCross Ref

Index Terms

  1. Variance analyses from invariance analyses

              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

                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
              About Cookies On This Site

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

              Learn more

              Got it!