An Assessment of Techniques for Proving Program Correctness
ACM Computing Surveys (CSUR)
The current state of proving programs correct
ACM '72 Proceedings of the ACM annual conference - Volume 1
A program verifier
Programming languages and their compilers: Preliminary notes
Programming languages and their compilers: Preliminary notes
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
Proving Theorems about LISP Functions
Journal of the ACM (JACM)
Complexity of Synthesizing Inductive Assertions
Journal of the ACM (JACM)
On the Correctness of Semantic-Syntax-Directed Translations
Journal of the ACM (JACM)
Design of sytems with concurrent error detection using software redundancy
ACM '86 Proceedings of 1986 ACM Fall joint computer conference
Putting static analysis to work for verification: A case study
Proceedings of the 2000 ACM SIGSOFT international symposium on Software testing and analysis
Safety checking of machine code
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
An Introduction to Proving the Correctness of Programs
ACM Computing Surveys (CSUR)
Test data as an aid in proving program correctness
Communications of the ACM
Communications of the ACM
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
Symbolic evaluation and the global value graph
POPL '77 Proceedings of the 4th 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
Automatic generation of program specifications
ISSTA '02 Proceedings of the 2002 ACM SIGSOFT international symposium on Software testing and analysis
Invariant inference for static checking:
Proceedings of the 10th ACM SIGSOFT symposium on Foundations of software engineering
Proof planning for strategy development
Annals of Mathematics and Artificial Intelligence
Invariant inference for static checking: an empirical evaluation
ACM SIGSOFT Software Engineering Notes
Inference rules for program annotation
ICSE '78 Proceedings of the 3rd international conference on Software engineering
A practical decision method for propositional dynamic logic (Preliminary Report)
STOC '78 Proceedings of the tenth annual ACM symposium on Theory of computing
Towards automatic debugging of programs
Proceedings of the international conference on Reliable software
SELECT—a formal system for testing and debugging programs by symbolic execution
Proceedings of the international conference on Reliable software
Proving structured programs correct, level by level
Proceedings of the international conference on Reliable software
A view of program verification
Proceedings of the international conference on Reliable software
Heuristics for program synthesis using loop invariants
ACM '78 Proceedings of the 1978 annual conference - Volume 2
Towards a canonical form for computer programs
ACM '75 Proceedings of the 1975 annual conference
SYNVER: A system for the automatic synthesis and verification of synchronization processes
ACM '74 Proceedings of the 1974 annual conference - Volume 1
Program improvement by source to source transformation
POPL '76 Proceedings of the 3rd ACM SIGACT-SIGPLAN symposium on Principles on programming languages
Test data as an aid in proving program correctness
POPL '76 Proceedings of the 3rd ACM SIGACT-SIGPLAN symposium on Principles on programming languages
An approach to loop programs debugging
ACM SIGPLAN Notices
Automatic Generation of Polynomial Loop Invariants: Algebraic Foundations
ISSAC '04 Proceedings of the 2004 international symposium on Symbolic and algebraic computation
Program reduction using symbolic execution
ACM SIGSOFT Software Engineering Notes
Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering
Proceedings of the 5th international conference on Generative programming and component engineering
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
Using SMT solvers to verify high-integrity programs
Proceedings of the second workshop on Automated formal methods
Computing Properties of Numerical Imperative Programs by Symbolic Computation
Fundamenta Informaticae - Half a Century of Inspirational Research: Honoring the Scientific Influence of Antoni Mazurkiewicz
Tool Integration for Reasoned Programming
Verified Software: Theories, Tools, Experiments
Aligator: A Mathematica Package for Invariant Generation (System Description)
IJCAR '08 Proceedings of the 4th international joint conference on Automated Reasoning
Generating customized verifiers for automatically generated code
GPCE '08 Proceedings of the 7th international conference on Generative programming and component engineering
A synthesizer of inductive assertions
AFIPS '75 Proceedings of the May 19-22, 1975, national computer conference and exposition
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
Reasoning algebraically about P-solvable loops
TACAS'08/ETAPS'08 Proceedings of the Theory and practice of software, 14th international conference on Tools and algorithms for the construction and analysis of systems
Generating polynomial invariants with DISCOVERER and QEPCAD
Formal methods and hybrid real-time systems
Scalable specification mining for verification and diagnosis
Proceedings of the 47th Design Automation Conference
Mechanical inference of invariants for FOR-loops
Journal of Symbolic Computation
Using dynamic analysis to discover polynomial and array invariants
Proceedings of the 34th International Conference on Software Engineering
Computing Properties of Numerical Imperative Programs by Symbolic Computation
Fundamenta Informaticae - Half a Century of Inspirational Research: Honoring the Scientific Influence of Antoni Mazurkiewicz
Hi-index | 48.25 |
Current methods for mechanical program verification require a complete predicate specification on each loop. Because this is tedious and error prone, producing a program with complete, correct predicates is reasonably difficult and would be facilitated by machine assistance. This paper discusses techniques for mechanically synthesizing loop predicates. Two classes of techniques are considered: (1) heuristic methods which derive loop predicates from boundary conditions and/or partially specified inductive assertions: (2) extraction methods which use input predicates and appropriate weak interpretations to obtain certain classes of loop predicates by an evaluation on the weak interpretation.