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.
- A. V. Aho, R. Sethi, and J. D. Ullman. Compilers: Priciples, Techniques, and Tools. 1986. Google Scholar
Digital Library
- A. W. Appel. Modern Compiler Implementation in ML. 1998. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- A. Biere, C. Artho, and V. Schuppan. Liveness checking as safety checking. In FMICS'02: Formal Methods for Industrial Critical Systems, 2002.Google Scholar
Cross Ref
- 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 Scholar
- A. Bradley, Z. Manna, and H. Sipma. Termination of polynomial programs. In VMCAI'05: Verification, Model Checking, and Abstract Interpretation, 2005. Google Scholar
Digital Library
- A. R. Bradley, Z. Manna, and H. B. Sipma. The polyranking principle. In ICALP'05: International Colloquium on Automata, Languages and Programming, 2005. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- M. Colón and H. Sipma. Practical methods for proving program termination. In CAV'02: International Conference on Computer Aided Verification, 2002. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- B. Cook, A. Podelski, and A. Rybalchenko. Abstraction refinement for termination. In SAS'05: Static Analysis Symposium, 2005. Google Scholar
Digital Library
- B. Cook, A. Podelski, and A. Rybalchenko. Termination proofs for systems code. In PLDI'06: Programming Language Design and Implementation, 2006. Google Scholar
Digital Library
- B. Cook, A. Podelski, and A. Rybalchenko. Terminator: Beyond safety. In CAV'06: International Conference on Computer Aided Verification, 2006. Google Scholar
Digital Library
- P. Cousot. The calculational design of a generic abstract interpreter. In M. Broy and R. Steinbrüggen, editors, Calculational System Design. 1999.Google Scholar
- 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 Scholar
Digital Library
- P. Cousot. Personal communication, 2006.Google Scholar
- 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 Scholar
Digital Library
- P. Cousot and R. Cousot. Systematic design of program analysis frameworks. In POPL'79: Principles of Programming Languages, 1979. Google Scholar
Digital Library
- P. Cousot and R. Cousot. Abstract interpretation frameworks. J. Log. Comput. 2(4), pp511--547, 1992.Google Scholar
Cross Ref
- P. Cousot and R. Cousot. Modular static program analysis. In CC'02: Conference of Compiler Construction, 2002. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- P. Cousot and N. Halbwachs. Automatic discovery of linear restraints among variables of a program. In POPL'78: Principles of Programming Languages, 1978. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- R. W. Floyd. Assigning meanings to programs. In Mathematical Aspects of Computer Science, 1967.Google Scholar
Cross Ref
- J. Giesl, R. Thiemann, P. Schneider-Kamp, and S. Falke. Automated termination proofs with AProVE. In RTA'04: Rewriting Techniques and Applications, 2004.Google Scholar
Cross Ref
- S. Graf and H. Saïdi. Construction of abstract state graphs with PVS. In CAV'97: International Conference on Computer Aided Verification, 1997. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- B. Jeannet. NewPolka polyhedra library. http://pop-art.inrialpes.fr/~people/bjeannet/newpolka/index.html.Google Scholar
- 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 Scholar
Digital Library
- Z. Manna and A. Pnueli. Axiomatic approach to total correctness of programs. Acta Informatica, 1974.Google Scholar
Digital Library
- L. Mauborgne and X. Rival. Trace partitioning in abstract interpretation based static analyzers. In ESOP'05: European Symposium on Programming, 2005. Google Scholar
Digital Library
- A. Miné. The Octagon abstract domain. Higher-Order and Symbolic Computation. (to appear).Google Scholar
- A. Pnueli. The temporal logic of programs. In 18th IEEE Symposium on Foundations of Computer Science, 1977.Google Scholar
Digital Library
- 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 Scholar
- A. Podelski and A. Rybalchenko. Transition invariants. In LICS'04: Logic in Computer Science, 2004. Google Scholar
Digital Library
- A. Podelski and A. Rybalchenko. Transition predicate abstraction and fair termination. In POPL'05: Principles of Programming Languages, 2005. Google Scholar
Digital Library
- J. C. Reynolds. The Craft of Programming. London, 1981. Google Scholar
Digital Library
- J. C. Reynolds. Separation logic: A logic for shared mutable data structures. In LICS'02: Symposium on Logic in Computer Science, 2002. Google Scholar
Digital Library
- S. Sankaranarayanan, F. Ivancic, I. Shlyakhter, and A. Gupta. Static analysis in disjunctive numerical domains. In SAS'06: Static Analysis Symposium, 2006. Google Scholar
Digital Library
- A. Tiwari. Termination of linear programs. In CAV'04: International Conference on Computer Aided Verification, 2004.Google Scholar
Cross Ref
- M. Y. Vardi. Verification of concurrent programs: The automata-theoretic framework. Ann. Pure Appl. Logic, 51(1-2):79--98, 1991.Google Scholar
Cross Ref
Index Terms
Variance analyses from invariance analyses
Recommendations
Variance analyses from invariance analyses
POPL '07: Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languagesAn 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 ...
Proving that programs eventually do something good
POPL '07: Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languagesIn 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). ...
Proving that programs eventually do something good
Proceedings of the 2007 POPL ConferenceIn 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). ...






Comments