The Ada Generic Library linear list processing packages
The Ada Generic Library linear list processing packages
Specifications are (preferably) executable
Software Engineering Journal
Larch: languages and tools for formal specification
Larch: languages and tools for formal specification
Using assertions in declarative and operational models for automated debugging
Journal of Systems and Software
TAOS: Testing with Analysis and Oracle Support
ISSTA '94 Proceedings of the 1994 ACM SIGSOFT international symposium on Software testing and analysis
An overview of the Tecton proof system
Theoretical Computer Science - Special issue on formal methods in databases and software engineering
A Practical Approach to Programming With Assertions
IEEE Transactions on Software Engineering
An axiomatic basis for computer programming
Communications of the ACM
The Science of Programming
Program verification based on denotation semantics
POPL '81 Proceedings of the 8th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Tecton: A Language for Manipulating Generic Objects
Program Specification, Proceedings of a Workshop
A new approach to program testing
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
The application of a symbolic mathematical system to program verification
ACM '74 Proceedings of the 1974 annual conference - Volume 1
A TWO-TIERED APPROACH TO SPECIFYING PROGRAMS
A TWO-TIERED APPROACH TO SPECIFYING PROGRAMS
A program verifier
Integrating tools and methods for rigorous analysis of c++ generic library components
Integrating tools and methods for rigorous analysis of c++ generic library components
Specifying and Testing Software Components using ADL
Specifying and Testing Software Components using ADL
Automatically Checking an Implementation against Its Formal Specification
IEEE Transactions on Software Engineering
Contract-Checking Wrappers for C++ Classes
IEEE Transactions on Software Engineering
STLlint: lifting static checking from languages to libraries
Software—Practice & Experience
Verifying C++ with STL containers via predicate abstraction
Proceedings of the twenty-second IEEE/ACM international conference on Automated software engineering
Programming with Proofs: Language-Based Approaches to Totally Correct Software
Verified Software: Theories, Tools, Experiments
C++ concepts as institutions: a specification view on concepts
LCSD '07 Proceedings of the 2007 Symposium on Library-Centric Software Design
On the application of the concept of dependability for design and analysis of vision systems
ICVS'03 Proceedings of the 3rd international conference on Computer vision systems
Checking formal specifications by testing
IW-FM'99 Proceedings of the 3rd Irish conference on Formal Methods
Hi-index | 0.00 |
Dynamic verification is a new approach to formal verification, applicable to generic algorithms such as those found in the Standard Template Library (STL, part of the Draft ANSI/ISO C++ Standard Library). Using behavioral abstraction and symbolic execution techniques, verifications are carried out at an abstract level such that the results can be used in a variety of instances of the generic algorithms without repeating the proofs. This is achieved by substituting for type parameters of generic algorithms special data types that model generic concepts by accepting symbolic inputs and deducing outputs using inference methods. By itself, this symbolic execution technique supports testing of programs with symbolic values at an abstract level. For formal verification we also need to generate multiple program execution paths and use assertions (to handle while loops, for example), but we show how this can be achieved via directives to a conventional debugger program and an analysis database. The assertions must still be supplied, but they can be packaged separately and evaluated as needed by appropriate transfers of control orchestrated via the debugger. Unlike all previous verification methods, the dynamic verification method thus works without having to transform source code or process it with special interpreters. We include an example of the formal verification of an STL generic algorithm.