Invariant assertions, invariant relations, and invariant functions

Abstract Invariant assertions play an important role in the analysis and documentation of while loops of imperative programs. Invariant functions and invariant relations are alternative analysis tools that are distinct from invariant assertions but are related to them. In this paper we discuss these three concepts and analyze their relationships. The study of invariant functions and invariant relations is interesting not only because it provides alternative means to analyze loops, but also because it gives us insights into the structure of invariant assertions, hence it may help us enhance techniques for generating invariant assertions.

[1]  Patrick Cousot,et al.  Automatic synthesis of optimal invariant assertions: Mathematical foundations , 1977, Artificial Intelligence and Programming Languages.

[2]  Harlan D. Mills,et al.  Trace: Tennessee Research and CreativeExchange , 2022 .

[3]  Edsger W. Dijkstra,et al.  A Discipline of Programming , 1976 .

[4]  José Nuno Oliveira,et al.  Pointfree foundations for (generic) lossless decomposition , 2011 .

[5]  Andrei Voronkov,et al.  Finding Loop Invariants for Programs over Arrays Using a Theorem Prover , 2009, 2009 11th International Symposium on Symbolic and Numeric Algorithms for Scientific Computing.

[6]  Tomás Vojnar,et al.  Tool Demonstration of the FLATA Counter Automata Toolset , 2010, WING@ETAPS/IJCAR.

[7]  Gunther Schmidt,et al.  Relational Mathematics , 2010, Encyclopedia of Mathematics and its Applications.

[8]  S. Elloumi,et al.  Discovering Regularities in Databases Using Canonical Decomposition of Binary Relations , 2004 .

[9]  Ewen Denney,et al.  A generic annotation inference algorithm for the safety certification of automatically generated code , 2006, GPCE '06.

[10]  Jules Desharnais,et al.  Strongest invariant functions: Their use in the systematic analysis of while statements , 2004, Acta Informatica.

[11]  Bertrand Meyer,et al.  Inferring Loop Invariants Using Postconditions , 2010, Fields of Logic and Computation.

[12]  Roland Carl Backhouse,et al.  A Calculational Approach to Mathematical Induction , 1997, Theor. Comput. Sci..

[13]  Henny B. Sipma,et al.  Non-linear loop invariant generation using Gröbner bases , 2004, POPL.

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

[15]  Lauretta O. Osho,et al.  Axiomatic Basis for Computer Programming , 2013 .

[16]  Enric Rodríguez-Carbonell,et al.  Program Verification Using Automatic Generation of Invariants , 2004, ICTAC.

[17]  John McCarthy,et al.  Mathematical Theory of Computation , 1991 .

[18]  Peter W. O'Hearn,et al.  Variance analyses from invariance analyses , 2007, POPL '07.

[19]  Gudmund Grov,et al.  Synthesising Functional Invariants in Separation Logic , 2010, WING@ETAPS/IJCAR.

[20]  Sumit Gulwani,et al.  Program analysis as constraint solving , 2008, PLDI '08.

[21]  Thomas Fahringer,et al.  Advanced Symbolic Analysis for Compilers , 2003, Lecture Notes in Computer Science.

[22]  Daniel Kroening,et al.  Loopfrog - loop summarization for static analysis , 2010, WING@ETAPS/IJCAR.

[23]  Thomas E. Cheatham,et al.  Symbolic evaluation of programs: a look at loop analysis , 1976, SYMSAC '76.

[24]  Lamia Labed Jilani,et al.  Computing Preconditions and Postconditions of While Loops , 2011, ICTAC.

[25]  Henny B. Sipma,et al.  Termination Analysis of Integer Linear Loops , 2005, CONCUR.

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

[27]  Andrei Voronkov,et al.  Interpolation and Symbol Elimination in Vampire , 2010, IJCAR.

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

[29]  Richard S. Bird,et al.  Algebra of programming , 1997, Prentice Hall International series in computer science.

[30]  José Nuno Oliveira,et al.  Extended Static Checking by Calculation Using the Pointfree Transform , 2009, LerNet ALFA Summer School.

[31]  Ali Mili,et al.  Mathematics for reasoning about loop functions , 2009, Sci. Comput. Program..

[32]  William R. Harris,et al.  Alternation for Termination , 2010, SAS.

[33]  Laura Kovács,et al.  An algorithm for automated generation of invariants for loops with conditionals , 2005, Seventh International Symposium on Symbolic and Numeric Algorithms for Scientific Computing (SYNASC'05).

[34]  Antoni W. Mazurkiewicz,et al.  Proving Algorithms by Tail Functions , 1971, Inf. Control..

[35]  Ali Mili,et al.  Regularity of Relations: A Measure of Uniformity , 1991, Theor. Comput. Sci..

[36]  Philipp Rümmer,et al.  Non-termination Checking for Imperative Programs , 2008, TAP.

[37]  Sumit Gulwani,et al.  Control-flow refinement and progress invariants for bound analysis , 2009, PLDI '09.

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

[39]  David Gries,et al.  The Science of Programming , 1981, Text and Monographs in Computer Science.

[40]  Henny B. Sipma,et al.  Linear Invariant Generation Using Non-linear Constraint Solving , 2003, CAV.

[41]  Thomas A. Henzinger,et al.  Valigator: A Verification Tool with Bound and Invariant Generation , 2008, LPAR.

[42]  Lamia Labed Jilani,et al.  Invariant relations: an automated tool to analyze loops , 2011 .

[43]  Sumit Gulwani,et al.  Proving Conditional Termination , 2008, CAV.

[44]  Stephen McCamant,et al.  The Daikon system for dynamic detection of likely invariants , 2007, Sci. Comput. Program..

[45]  Mark Harman,et al.  Loop squashing transformations for amorphous slicing , 2004, 11th Working Conference on Reverse Engineering.

[46]  Ryszard Janicki,et al.  Computing Properties of Numerical Imperative Programs by Symbolic Computation , 2008, Fundam. Informaticae.

[47]  Farokh B. Bastani,et al.  Automated Discovery of Loop Invariants for High-Assurance Programs Synthesized Using AI Planning Techniques , 2008, 2008 11th IEEE High Assurance Systems Engineering Symposium.

[48]  José Nuno Oliveira,et al.  Pointfree Factorization of Operation Refinement , 2006, FM.

[49]  Ali Mili,et al.  On the lattice of specifications: Applications to a specification methodology , 2005, Formal Aspects of Computing.

[50]  Tudor Jebelean,et al.  Automated Generation of Loop Invariants by Recurrence Solving in Theorema , 2004 .

[51]  Daniel Kroening,et al.  Loop Summarization Using Abstract Transformers , 2008, ATVA.

[52]  Florian Zuleger,et al.  LOOPUS - A Tool for Computing Loop Bounds for C Programs , 2010, WING@ETAPS/IJCAR.

[53]  Robert W. Floyd,et al.  Assigning meaning to programs , 1967 .

[54]  Carroll Morgan,et al.  Programming from specifications , 1990, Prentice Hall International Series in computer science.