Variance analyses from invariance analyses

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.

[1]  Peter W. O'Hearn,et al.  Beyond Reachability: Shape Abstraction in the Presence of Pointer Arithmetic , 2006, SAS.

[2]  Brian McKenna,et al.  Virtual Community , 1998, Online Inf. Rev..

[3]  Andreas Podelski,et al.  A Complete Method for the Synthesis of Linear Ranking Functions , 2004, VMCAI.

[4]  Chao Wang,et al.  Using Statically Computed Invariants Inside the Predicate Abstraction and Refinement Loop , 2006, CAV.

[5]  Henny B. Sipma,et al.  Synthesis of Linear Ranking Functions , 2001, TACAS.

[6]  A. J. Jex-Blake “Et. all” , 1952 .

[7]  Robert W. Floyd,et al.  Assigning Meanings to Programs , 1993 .

[8]  Patrick Cousot,et al.  Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints , 1977, POPL.

[9]  Patrick Cousot,et al.  Systematic design of program analysis frameworks , 1979, POPL.

[10]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[11]  Andrew W. Appel,et al.  Modern Compiler Implementation in ML , 1997 .

[12]  V. Rich Personal communication , 1989, Nature.

[13]  Andreas Podelski,et al.  Proving that programs eventually do something good , 2007, POPL '07.

[14]  Sriram K. Rajamani,et al.  Counterexample Driven Refinement for Abstract Interpretation , 2006, TACAS.

[15]  Peter W. O'Hearn,et al.  Automatic Termination Proofs for Programs with Shape-Shifting Heaps , 2006, CAV.

[16]  Viktor Schuppan,et al.  Liveness Checking as Safety Checking , 2002, FMICS.

[17]  Henny B. Sipma,et al.  Termination of Polynomial Programs , 2005, VMCAI.

[18]  Patrick Cousot,et al.  Abstract Interpretation Frameworks , 1992, J. Log. Comput..

[19]  W. Neville Holmes,et al.  The Craft of Programming , 2008, Computer.

[20]  Nicolas Halbwachs,et al.  Automatic discovery of linear restraints among variables of a program , 1978, POPL.

[21]  Luis Borges Gouveia The NetLab experience Moving the action to electronic learning environments , 1998 .

[22]  Patrick Cousot,et al.  The ASTREÉ Analyzer , 2005, ESOP.

[23]  Muhammad K. Betz Distance Education : A Systems View , 2005 .

[24]  Hassen Saïdi,et al.  Construction of Abstract State Graphs with PVS , 1997, CAV.

[25]  Jürgen Giesl,et al.  Automated Termination Proofs with AProVE , 2004, RTA.

[26]  Xavier Rival,et al.  Trace Partitioning in Abstract Interpretation Based Static Analyzers , 2005, ESOP.

[27]  Patrick Cousot,et al.  The ASTR ´ EE Analyzer , 2005 .

[28]  Anna Philippou,et al.  Tools and Algorithms for the Construction and Analysis of Systems , 2018, Lecture Notes in Computer Science.

[29]  Supratik Chakraborty Termination Of Linear Programs , 2008 .

[30]  Patrick Cousot,et al.  Modular Static Program Analysis , 2002, CC.

[31]  Fred Kröger,et al.  Temporal Logic of Programs , 1987, EATCS Monographs on Theoretical Computer Science.

[32]  John C. Reynolds,et al.  Separation logic: a logic for shared mutable data structures , 2002, Proceedings 17th Annual IEEE Symposium on Logic in Computer Science.

[33]  Henny B. Sipma,et al.  The Polyranking Principle , 2005, ICALP.

[34]  Peter W. O'Hearn,et al.  A Local Shape Analysis Based on Separation Logic , 2006, TACAS.

[35]  S. Papert The children's machine: rethinking school in the age of the computer , 1993 .

[36]  Neil D. Jones,et al.  The size-change principle for program termination , 2001, POPL '01.

[37]  Ingeman Arbnor,et al.  The Systems View , 2009 .

[38]  Moshe Y. Vardi Verification of Concurrent Programs: The Automata-Theoretic Framework , 1991, Ann. Pure Appl. Log..

[39]  Andreas Podelski,et al.  Transition invariants , 2004, Proceedings of the 19th Annual IEEE Symposium on Logic in Computer Science, 2004..

[40]  Andreas Podelski,et al.  Abstraction Refinement for Termination , 2005, SAS.

[41]  Sriram Sankaranarayanan,et al.  Static Analysis in Disjunctive Numerical Domains , 2006, SAS.

[42]  Wray L. Buntine,et al.  Learning In Networks , 1995 .

[43]  Antoine Miné,et al.  The octagon abstract domain , 2001, High. Order Symb. Comput..

[44]  Luis Borges Gouveia Group assessment: alternative forms to evaluate student skills , 1998 .

[45]  Patrick Cousot,et al.  The calculational design of a generic abstract interpreter , 1999 .

[46]  Andreas Podelski,et al.  Termination proofs for systems code , 2006, PLDI '06.

[47]  Henny B. Sipma,et al.  Practical Methods for Proving Program Termination , 2002, CAV.

[48]  Patrick Cousot,et al.  Proving Program Invariance and Termination by Parametric Abstraction, Lagrangian Relaxation and Semidefinite Programming , 2005, VMCAI.

[49]  Zohar Manna,et al.  Axiomatic approach to total correctness of programs , 1973, Acta Informatica.

[50]  Lew Perren European casebook on: Competing through information technology — strategy and implementation , 1996 .

[51]  Andreas Podelski,et al.  Transition predicate abstraction and fair termination , 2005, POPL '05.

[52]  Andreas Podelski,et al.  Terminator: Beyond Safety , 2006, CAV.