Program Verification Using Automatic Generation of Invariants

In an earlier paper, an algorithm based on algebraic geometry was developed for discovering polynomial invariants in loops without nesting, not requiring any a priori bound on the degree of the invariants. Polynomial invariants were shown to form an ideal, a basis of which could be computed using Grobner bases methods. In this paper, an abstract logical framework is presented for automating the discovery of invariants for loops without nesting, of which the algorithm based on algebraic geometry and Grobner bases is one particular instance. The approach based on this logical abstract framework is proved to be correct and complete. The techniques have been used with a verifier to automatically check properties of many non-trivial programs with considerable success. Some of these programs are discussed in the paper to illustrate the effectiveness of the method.

[1]  Bernard Boigelot Symbolic Methods for Exploring Infinite State Spaces , 1998 .

[2]  Donald E. Knuth,et al.  The art of computer programming. Vol.2: Seminumerical algorithms , 1981 .

[3]  Donald Ervin Knuth,et al.  The Art of Computer Programming , 1968 .

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

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

[6]  Christoph Weidenbach,et al.  S PASS Version 2.0 , 2002, CADE.

[7]  A. Tarski A Decision Method for Elementary Algebra and Geometry , 2023 .

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

[9]  David A. Cox,et al.  Ideals, Varieties, and Algorithms: An Introduction to Computational Algebraic Geometry and Commutative Algebra, 3/e (Undergraduate Texts in Mathematics) , 2007 .

[10]  Michael Karr,et al.  Affine relationships among variables of a program , 1976, Acta Informatica.

[11]  Deepak Kapur Automatically Generating Loop Invariants Using Quantifier Elimination , 2005, Deduction and Applications.

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

[13]  Enric Rodríguez-Carbonell,et al.  Automatic Generation of Polynomial Loop Invariants: Algebraic Foundations , 2004, ISSAC '04.

[14]  Ben Wegbreit,et al.  Property extraction in well-founded property sets , 1975, IEEE Transactions on Software Engineering.

[15]  Anne Kaldewaij,et al.  Programming - the derivation of algorithms , 1990, Prentice Hall international series in computer science.

[16]  Edward Cohen,et al.  Programming in the 1990s , 1990, Texts and Monographs in Computer Science.

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

[18]  Ritu Chadha,et al.  On the Mechanical Derivation of Loop Invariants , 1993, J. Symb. Comput..

[19]  Markus Müller-Olm,et al.  Computing polynomial program invariants , 2004, Inf. Process. Lett..

[20]  Enric Rodríguez-Carbonell,et al.  An Abstract Interpretation Approach for Automatic Generation of Polynomial Invariants , 2004, SAS.