Reasoning about comprehensions with first-order SMT solvers

K. Rustan M. Leino, Rosemary Monahan
2009 Proceedings of the 2009 ACM symposium on Applied Computing - SAC '09  
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 firstorder 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
more » ... lver. 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.
doi:10.1145/1529282.1529411 dblp:conf/sac/LeinoM09 fatcat:glo7hapbhfbxzltbs3r4slfe7a