Programming with sets; an introduction to SETL
Programming with sets; an introduction to SETL
Simplify: a theorem prover for program checking
Journal of the ACM (JACM)
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
Full functional verification of linked data structures
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
Formal Verification of Avionics Software Products
FM '09 Proceedings of the 2nd World Congress on Formal Methods
Using first-order theorem provers in the Jahob data structure verification system
VMCAI'07 Proceedings of the 8th international conference on Verification, model checking, and abstract interpretation
The Why/Krakatoa/Caduceus platform for deductive program verification
CAV'07 Proceedings of the 19th international conference on Computer aided verification
An abstract machine for the old value retrieval
MPC'10 Proceedings of the 10th international conference on Mathematics of program construction
Precise reasoning for programs using containers
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Hi-Lite: the convergence of compiler technology and program verification
Proceedings of the 2012 ACM conference on High integrity language technology
Hi-index | 0.00 |
For critical software development, containers such as lists, vectors, sets or maps are an attractive alternative to ad-hoc data structures based on pointers. As standards like DO-178C put formal verification and testing on an equal footing, it is important to give users the ability to apply both to the verification of code using containers. In this paper, we present a definition of containers whose aim is to facilitate their use in certified software, using modern proof technology and novel specification languages. Correct usage of containers and user-provided correctness properties can be checked either by execution during testing or by formal proof with an automatic prover. We present a formal semantics for containers and an axiomatization of this semantics targeted at automatic provers. We have proved in Coq that the formal semantics is consistent and that the axiomatization thereof is correct.