Satisfiability Modulo Recursive Programs


We present a semi-decision procedure for checking satisfiability of expressive correctness properties of recursive first-order functional programs. In our approach, both properties and programs are expressed in the same language, a subset of Scala. We implemented our procedure and integrated it with the Z3 SMT solver and the Scala compiler. Our procedure is sound for counterexamples and for proofs of terminating functions. It is terminating and thus complete for many important classes of specifications, including all satisfiable formulas and all formulas where recursive functions satisfy certain syntactic restrictions. Using our system, Leon, we verified detailed correctness properties for functional data structure implementations, as well as syntax tree manipulations. We have found our system to be fast for both finding counterexamples and finding correctness proofs, and to scale to larger programs than alternative techniques.

DOI: 10.1007/978-3-642-23702-7_23

Extracted Key Phrases

1 Figure or Table

Citations per Year

106 Citations

Semantic Scholar estimates that this publication has 106 citations based on the available data.

See our FAQ for additional information.

Cite this paper

@inproceedings{Suter2011SatisfiabilityMR, title={Satisfiability Modulo Recursive Programs}, author={Philippe Suter and Ali Sinan K{\"{o}ksal and Viktor Kuncak}, booktitle={SAS}, year={2011} }