Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
research-article
Open access

Higher-order demand-driven symbolic evaluation

Published: 03 August 2020 Publication History
  • Get Citation Alerts
  • 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.

    Supplementary Material

    Auxiliary Archive (icfp20main-p69-p-archive.zip)
    The file appendices.pdf contains all the proofs for the paper.
    Presentation at ICFP '20 (a102-palmer-presentation.mp4)

    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
    [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
    [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
    [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
    [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
    [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
    [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
    [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.06460

    Cited By

    View all
    • (2024)A Pure Demand Operational Semantics with Applications to Program AnalysisProceedings of the ACM on Programming Languages10.1145/36498528:OOPSLA1(1154-1180)Online publication date: 29-Apr-2024
    • (2020)Higher-order demand-driven symbolic evaluationProceedings of the ACM on Programming Languages10.1145/34089844:ICFP(1-28)Online publication date: 3-Aug-2020

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image Proceedings of the ACM on Programming Languages
    Proceedings of the ACM on Programming Languages  Volume 4, Issue ICFP
    August 2020
    1070 pages
    EISSN:2475-1421
    DOI:10.1145/3415018
    Issue’s Table of Contents
    This work is licensed under a Creative Commons Attribution International 4.0 License.

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 03 August 2020
    Published in PACMPL Volume 4, Issue ICFP

    Permissions

    Request permissions for this article.

    Check for updates

    Badges

    Author Tags

    1. Demand-Driven Execution
    2. Symbolic Execution
    3. Test Generation

    Qualifiers

    • Research-article

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)78
    • Downloads (Last 6 weeks)7

    Other Metrics

    Citations

    Cited By

    View all
    • (2024)A Pure Demand Operational Semantics with Applications to Program AnalysisProceedings of the ACM on Programming Languages10.1145/36498528:OOPSLA1(1154-1180)Online publication date: 29-Apr-2024
    • (2020)Higher-order demand-driven symbolic evaluationProceedings of the ACM on Programming Languages10.1145/34089844:ICFP(1-28)Online publication date: 3-Aug-2020

    View Options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Get Access

    Login options

    Full Access

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media