skip to main content
research-article
Open Access
Artifacts Evaluated & Functional / v1.1

Higher-order demand-driven symbolic evaluation

Published:03 August 2020Publication History
Skip Abstract Section

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.

Skip Supplemental Material Section

Supplemental Material

Presentation at ICFP '20

References

  1. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  2. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  3. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  4. 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 ScholarGoogle ScholarCross RefCross Ref
  5. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  6. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  7. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  8. 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 ScholarGoogle Scholar

Index Terms

  1. Higher-order demand-driven symbolic evaluation

            Recommendations

            Comments

            Login options

            Check if you have access through your login credentials or your institution to get full access on this article.

            Sign in

            Full Access

            PDF Format

            View or Download as a PDF file.

            PDF

            eReader

            View online with eReader.

            eReader
            About Cookies On This Site

            We use cookies to ensure that we give you the best experience on our website.

            Learn more

            Got it!