A Method of Programming
Automatically proving the correctness of compiler optimizations
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
Simplify: a theorem prover for program checking
Journal of the ACM (JACM)
Software Refinement with Perfect Developer
SEFM '05 Proceedings of the Third IEEE International Conference on Software Engineering and Formal Methods
Isabelle/HOL: a proof assistant for higher-order logic
Isabelle/HOL: a proof assistant for higher-order logic
Boogie: a modular reusable verifier for object-oriented programs
FMCO'05 Proceedings of the 4th international conference on Formal Methods for Components and Objects
The spec# programming system: an overview
CASSIS'04 Proceedings of the 2004 international conference on Construction and Analysis of Safe, Secure, and Interoperable Smart Devices
Proceedings of the 7th International Workshop on Satisfiability Modulo Theories
Faster and More Complete Extended Static Checking for the Java Modeling Language
Journal of Automated Reasoning
Semantic subtyping with an SMT solver
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Local reasoning and dynamic framing for the composite pattern and its clients
VSTTE'10 Proceedings of the Third international conference on Verified software: theories, tools, experiments
Dafny: an automatic program verifier for functional correctness
LPAR'10 Proceedings of the 16th international conference on Logic for programming, artificial intelligence, and reasoning
Inferring loop invariants using postconditions
Fields of logic and computation
Pest: from the lab to the classroom
Proceedings of the 1st Workshop on Developing Tools as Plug-ins
Relational reasoning via SMT solving
FM'11 Proceedings of the 17th international conference on Formal methods
Considerate reasoning and the composite design pattern
VMCAI'10 Proceedings of the 11th international conference on Verification, Model Checking, and Abstract Interpretation
ACM Transactions on Programming Languages and Systems (TOPLAS)
A polymorphic intermediate verification language: design and logical encoding
TACAS'10 Proceedings of the 16th international conference on Tools and Algorithms for the Construction and Analysis of Systems
ECOOP'13 Proceedings of the 27th European conference on Object-Oriented Programming
Formal model-based validation for tally systems
Vote-ID'13 Proceedings of the 4th international conference on E-Voting and Identity
Hi-index | 0.00 |
This paper presents a technique for translating common comprehension expressions (sum, count, product, min, and max) into verification conditions that can be tackled by two off-the-shelf first-order SMT solvers. Since a first-order SMT solver does not directly support the bound variables that occur in comprehension expressions, the challenge is to provide a sound axiomatisation that is strong enough to prove interesting programs and, furthermore, that can be used automatically by the SMT solver. The technique has been implemented in the Spec# program verifier. The paper also reports on the experience of using Spec# to verify several challenging programming examples drawn from a textbook by Dijkstra and Feijen.