A heuristic for deriving loop functions
IEEE Transactions on Software Engineering
The trouble with for-loop invariants
SIGCSE '88 Proceedings of the nineteenth SIGCSE technical symposium on Computer science education
Predicate calculus and program semantics
Predicate calculus and program semantics
The early British computer conferences
Dynamically discovering likely program invariants to support program evolution
Proceedings of the 21st international conference on Software engineering
Generating algebraic laws from imperative programs
Theoretical Computer Science
Quickly detecting relevant program invariants
Proceedings of the 22nd international conference on Software engineering
Communications of the ACM
Communications of the ACM
The synthesis of loop predicates
Communications of the ACM
Automatic predicate abstraction of C programs
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Predicate abstraction for software verification
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Finding Invariant assertions for proving programs
Proceedings of the international conference on Reliable software
Non-linear loop invariant generation using Gröbner bases
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Automatic generation of polynomial invariants of bounded degree using abstract interpretation
Science of Computer Programming
Shape analysis with inductive recursion synthesis
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
IEEE Software
ADI: Automatic Derivation of Invariants
IEEE Transactions on Software Engineering
A Note on Synthesis of Inductive Assertions
IEEE Transactions on Software Engineering
The Determination of Loop Invariants for Programs with Arrays
IEEE Transactions on Software Engineering
Some Aspects of the Verification of Loop Computations
IEEE Transactions on Software Engineering
Boogie: a modular reusable verifier for object-oriented programs
FMCO'05 Proceedings of the 4th international conference on Formal Methods for Components and Objects
ICATPN'06 Proceedings of the 27th international conference on Applications and Theory of Petri Nets and Other Models of Concurrency
Hi-index | 0.00 |
In the mechanical verification of programs containing loops it is often necessary to provide loop invariants additionally to the specification in the form of pre and postconditions. In this paper we present a method for the mechanical inference of invariants for a practically relevant class of FOR-loops. The invariant is derived from the specification (pre, post) and the final bound of the loop only. The method is based on the technique ''replacing a constant in post by a variable'', which has traditionally been used manually for the development of WHILE-loops. Our method is a complete mechanization of this heuristic for the verification of existing annotated FOR-loops. The range of applicability of the method is further extended by a technique called ''bound transformation'' and by taking common invariant conjuncts of pre and post into account. As a result, the method is applicable to the majority of FOR-loops occurring in practice. The incorporation of this method into an automatic program verifier would make the task of the SW engineer easier, because he has only to provide a pre-post-specification for a FOR-loop.