The art of computer programming, volume 1 (3rd ed.): fundamental algorithms
The art of computer programming, volume 1 (3rd ed.): fundamental algorithms
The synthesis of loop predicates
Communications of the ACM
Communications of the ACM
An axiomatic basis for computer programming
Communications of the ACM
Introduction to Mathematical Theory of Computation
Introduction to Mathematical Theory of Computation
A more mechanical approach to program verification
Programming Symposium, Proceedings Colloque sur la Programmation
Towards automatic debugging of programs
Proceedings of the international conference on Reliable software
Finding Invariant assertions for proving programs
Proceedings of the international conference on Reliable software
A program verifier
Proving that computer programs terminate cleanly.
Proving that computer programs terminate cleanly.
Structured programming
Program abstraction and instantiation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Program understanding: challenge for the 1990's
IBM Systems Journal
A Knowledge-Based Approach to the Analysis of Loops
IEEE Transactions on Software Engineering
Dynamically discovering likely program invariants to support program evolution
Proceedings of the 21st international conference on Software engineering
Design of sytems with concurrent error detection using software redundancy
ACM '86 Proceedings of 1986 ACM Fall joint computer conference
Automatic Generation of Invariants
Formal Methods in System Design - Special issue on The First Federated Logic Conference (FLOC'96), part II
Derivation of Invariant Assertions During Program Development by Transformation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Dynamically Discovering Likely Program Invariants to Support Program Evolution
IEEE Transactions on Software Engineering - Special issue on 1999 international conference on software engineering
Predicate abstraction for software verification
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Automating proofs of the absence of common runtime errors
POPL '78 Proceedings of the 5th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Implementation of an array bound checker
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
The evolution of programs: a system for automatic program modification
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Proof planning for strategy development
Annals of Mathematics and Artificial Intelligence
Synthesis of Linear Ranking Functions
TACAS 2001 Proceedings of the 7th International Conference on Tools and Algorithms for the Construction and Analysis of Systems
A Technique for Invariant Generation
TACAS 2001 Proceedings of the 7th International Conference on Tools and Algorithms for the Construction and Analysis of Systems
Combining Theorem Proving and Model Checking through Symbolic Analysis
CONCUR '00 Proceedings of the 11th International Conference on Concurrency Theory
Symbolic Analysis of Transition Systems
ASM '00 Proceedings of the International Workshop on Abstract State Machines, Theory and Applications
Logic versus mathematics in computer science education
SIGCSE '83 Proceedings of the fourteenth SIGCSE technical symposium on Computer science education
Inference rules for program annotation
ICSE '78 Proceedings of the 3rd international conference on Software engineering
Symbolic evaluation of programs: a look at loop analysis
SYMSAC '76 Proceedings of the third ACM symposium on Symbolic and algebraic computation
Automatic synthesis of optimal invariant assertions: Mathematical foundations
Proceedings of the 1977 symposium on Artificial intelligence and programming languages
Towards automatic debugging of programs
Proceedings of the international conference on Reliable software
Qualifying reusable functions using symbolic execution
WCRE '95 Proceedings of the Second Working Conference on Reverse Engineering
Automatic Generation of Polynomial Loop Invariants: Algebraic Foundations
ISSAC '04 Proceedings of the 2004 international symposium on Symbolic and algebraic computation
A selected descriptor-indexed bibliography to the literature on belief revision
ACM SIGART Bulletin
A Method for Computing the Number of Iterations in Data Dependent Loops
Real-Time Systems
Proceedings of the 5th international conference on Generative programming and component engineering
An Integrated Approach to High Integrity Software Verification
Journal of Automated Reasoning
Polynomial approximations of the relational semantics of imperative programs
Science of Computer Programming
Generating all polynomial invariants in simple loops
Journal of Symbolic Computation
Finding positively invariant sets of a class of nonlinear loops via curve fitting
Proceedings of the 2009 conference on Symbolic numeric computation
A method for automatically analyzing programs
IJCAI'79 Proceedings of the 6th international joint conference on Artificial intelligence - Volume 2
IJCAI'77 Proceedings of the 5th international joint conference on Artificial intelligence - Volume 1
Heuristic and formal methods in automatic program debugging
IJCAI'85 Proceedings of the 9th international joint conference on Artificial intelligence - Volume 1
Generating polynomial invariants with DISCOVERER and QEPCAD
Formal methods and hybrid real-time systems
Mechanical inference of invariants for FOR-loops
Journal of Symbolic Computation
Termination of polynomial programs
VMCAI'05 Proceedings of the 6th international conference on Verification, Model Checking, and Abstract Interpretation
Verification conditions for source-level imperative programs
Computer Science Review
Using dynamic analysis to discover polynomial and array invariants
Proceedings of the 34th International Conference on Software Engineering
Hi-index | 48.22 |
Most present systems for verification of computer programs are incomplete in that intermediate inductive assertions must be provided manually by the user, termination is not proven, and incorrect programs are not treated. As a unified solution to these problems, this paper suggests conducting a logical analysis of programs by using invariants which express what is actually occurring in the program.The first part of the paper is devoted to techniques for the automatic generation of invariants. The second part provides criteria for using the invariants to check simultaneously for correctness (including termination) or incorrectness. A third part examines the implications of the approach for the automatic diagnosis and correction of logical errors.