Enumerative combinatorics
Programming: the derivation of algorithms
Programming: the derivation of algorithms
The art of computer programming, volume 2 (3rd ed.): seminumerical algorithms
The art of computer programming, volume 2 (3rd ed.): seminumerical algorithms
Communications of the ACM
The synthesis of loop predicates
Communications of the ACM
Automatic discovery of linear restraints among variables of a program
POPL '78 Proceedings of the 5th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
A Discipline of Programming
The verifying compiler: A grand challenge for computing research
Journal of the ACM (JACM)
Non-linear loop invariant generation using Gröbner bases
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Customised Induction Rules for Proving Correctness of Imperative Programs
SEFM '05 Proceedings of the Third IEEE International Conference on Software Engineering and Formal Methods
Automatic generation of polynomial invariants of bounded degree using abstract interpretation
Science of Computer Programming
Generating all polynomial invariants in simple loops
Journal of Symbolic Computation
Constructing invariants for hybrid systems
Formal Methods in System Design
Finding positively invariant sets of a class of nonlinear loops via curve fitting
Proceedings of the 2009 conference on Symbolic numeric computation
Generating polynomial invariants with DISCOVERER and QEPCAD
Formal methods and hybrid real-time systems
Invariant generation for P-solvable loops with assignments
CSR'08 Proceedings of the 3rd international conference on Computer science: theory and applications
Polynomial invariants for linear loops
Cybernetics and Systems Analysis
Journal of Symbolic Computation
SIAM Journal on Control and Optimization
Interprocedurally analyzing polynomial identities
STACS'06 Proceedings of the 23rd Annual conference on Theoretical Aspects of Computer Science
Program verification using automatic generation of invariants
ICTAC'04 Proceedings of the First international conference on Theoretical Aspects of Computing
Linearity analysis for automatic differentiation
ICCS'06 Proceedings of the 6th international conference on Computational Science - Volume Part IV
Generation of basic semi-algebraic invariants using convex polyhedra
SAS'05 Proceedings of the 12th international conference on Static Analysis
Join algorithms for the theory of uninterpreted functions
FSTTCS'04 Proceedings of the 24th international conference on Foundations of Software Technology and Theoretical Computer Science
Optimal abstraction on real-valued programs
SAS'07 Proceedings of the 14th international conference on Static Analysis
Symbolic termination analysis of solvable loops
Journal of Symbolic Computation
Probabilistic program analysis with martingales
CAV'13 Proceedings of the 25th international conference on Computer Aided Verification
Hi-index | 0.00 |
This paper presents the algebraic foundation for an approach for generating polynomial loop invariants in imperative programs. It is first shown that the set of polynomials serving as loop invariants has the algebraic structure of an ideal. Using this connection, a procedure for finding loop invariants is given in terms of operations on ideals, for which Grobner basis constructions can be employed. Most importantly, it is proved that if the assignment statements in a loop are solvable (in particular, affine) mappings with positive eigenvalues, then the procedure terminates in at most 2m+1 iterations, where m is the number of variables in the loop. The proof is done by showing that the irreducible subvarieties of the variety associated with the polynomial ideal approximating the invariant polynomial ideal of the loop either stay the same or increase their dimension in every iteration. This yields a correct and complete algorithm for inferring conjunctions of polynomial equations as invariants. The method has been implemented in Maple using the Groebner package. The implementation has been used to automatically discover nontrivial invariants for several examples to illustrate the power of the techniques.