Abstract
Symbolic backwards execution (SBE) is a useful variation on standard forward symbolic evaluation; it allows a symbolic evaluation to start anywhere in the program and proceed by executing in reverse to the program start. SBE brings goal-directed reasoning to symbolic evaluation and has proven effective in e.g. automated test generation for imperative languages.
In this paper we define DDSE, a novel SBE which operates on a functional as opposed to imperative language; furthermore, it is defined as a natural extension of a backwards-executing interpreter. We establish the soundness of DDSE and define a test generation algorithm for this toy language. We report on an initial reference implementation to confirm the correctness of the principles.
Supplemental Material
Available for Download
The file appendices.pdf contains all the proofs for the paper.
- Peter W. O'Hearn. 2019. Incorrectness Logic. Proc. ACM Program. Lang. 4, POPL, Article Article 10 (Dec. 2019 ), 32 pages. https://doi.org/10.1145/3371078 Google Scholar
Digital Library
- Zachary Palmer, Theodore Park, Scott Smith, and Shiwei Weng. 2020a. Higher-Order Demand-Driven Symbolic Evaluation: Software Artifact. Zenodo. https://doi.org/10.5281/zenodo.3923023 Google Scholar
Digital Library
- Zachary Palmer, Theodore Park, Scott Smith, and Shiwei Weng. 2020b. Higher-Order Demand-Driven Symbolic Evaluation: Supplementary Appendices. ACM Digital Library. https://doi.org/10.1145/3408984 Google Scholar
Digital Library
- Zachary Palmer and Scott F. Smith. 2016. Higher-Order Demand-Driven Program Analysis. In 30th European Conference on Object-Oriented Programming (ECOOP 2016 ) (Leibniz International Proceedings in Informatics (LIPIcs)), Shriram Krishnamurthi and Benjamin S. Lerner (Eds.), Vol. 56. Schloss Dagstuhl-Leibniz-Zentrum fuer Informatik, Dagstuhl, Germany, 19 : 1-19 : 25. https://doi.org/10.4230/LIPIcs.ECOOP. 2016.19 Google Scholar
Cross Ref
- Nikhil Swamy, Joel Weinberger, Cole Schlesinger, Juan Chen, and Benjamin Livshits. 2013. Verifying Higher-Order Programs with the Dijkstra Monad. In Proceedings of the 34th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI '13). Association for Computing Machinery, New York, NY, USA, 387-398. https: //doi.org/10.1145/2491956.2491978 Google Scholar
Digital Library
- Sam Tobin-Hochstadt and David Van Horn. 2012. Higher-order Symbolic Execution via Contracts. In Proceedings of the ACM International Conference on Object Oriented Programming Systems Languages and Applications (OOPSLA '12). ACM, New York, NY, USA, 537-554. https://doi.org/10.1145/2384616.2384655 Google Scholar
Digital Library
- Emina Torlak and Rastislav Bodik. 2013. Growing Solver-aided Languages with Rosette. In Proceedings of the 2013 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming & Software (Onward ! 2013 ). ACM, New York, NY, USA, 135-152. https://doi.org/10.1145/2509578.2509586 Google Scholar
Digital Library
- Maaike Zwart and Dan Marsden. 2018. Don't Try This at Home: No-Go Theorems for Distributive Laws. arXiv:math.CT/ 1811.06460 https://arxiv.org/abs/ 1811.06460Google Scholar
Index Terms
Higher-order demand-driven symbolic evaluation
Recommendations
Higher-order symbolic execution via contracts
OOPSLA '12We present a new approach to automated reasoning about higher-order programs by extending symbolic execution to use behavioral contracts as symbolic values, thus enabling symbolic approximation of higher-order behavior.
Our approach is based on the idea ...
Relatively complete counterexamples for higher-order programs
PLDI '15In this paper, we study the problem of generating inputs to a higher-order program causing it to error. We first approach the problem in the setting of PCF, a typed, core functional language and contribute the first relatively complete method for ...
Symbolic types for lenient symbolic execution
We present lambda_sym, a typed λ-calculus for lenient symbolic execution, where some language constructs do not recognize symbolic values. Its type system, however, ensures safe behavior of all symbolic values in a program. Our calculus extends a base ...






Comments