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

Decidable verification of uninterpreted programs

Published: 02 January 2019 Publication History
  • Get Citation Alerts
  • Abstract

    We study the problem of completely automatically verifying uninterpreted programs—programs that work over arbitrary data models that provide an interpretation for the constants, functions and relations the program uses. The verification problem asks whether a given program satisfies a postcondition written using quantifier-free formulas with equality on the final state, with no loop invariants, contracts, etc. being provided. We show that this problem is undecidable in general. The main contribution of this paper is a subclass of programs, called coherent programs that admits decidable verification, and can be decided in Pspace. We then extend this class of programs to classes of programs that are k-coherent, where k ∈ ℕ, obtained by (automatically) adding k ghost variables and assignments that make them coherent. We also extend the decidability result to programs with recursive function calls and prove several undecidability results that show why our restrictions to obtain decidability seem necessary.

    Supplementary Material

    WEBM File (a46-mathur.webm)

    References

    [1]
    B. Alpern, M. N. Wegman, and F. K. Zadeck. 1988. Detecting Equality of Variables in Programs. In Proceedings of the 15th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL ’88). ACM, New York, NY, USA, 1–11.
    [2]
    Rajeev Alur, Michael Benedikt, Kousha Etessami, Patrice Godefroid, Thomas Reps, and Mihalis Yannakakis. 2005. Analysis of Recursive State Machines. ACM Trans. Program. Lang. Syst. 27, 4 (July 2005), 786–818.
    [3]
    Rajeev Alur and P. Madhusudan. 2004. Visibly Pushdown Languages. In Proceedings of the Thirty-sixth Annual ACM Symposium on Theory of Computing (STOC ’04). ACM, New York, NY, USA, 202–211.
    [4]
    Rajeev Alur and P. Madhusudan. 2009. Adding Nesting Structure to Words. J. ACM 56, 3, Article 16 (May 2009), 43 pages.
    [5]
    Aaron R. Bradley and Zohar Manna. 2007. The Calculus of Computation: Decision Procedures with Applications to Verification. Springer-Verlag, Berlin, Heidelberg.
    [6]
    Randal E. Bryant, Steven German, and Miroslav N. Velev. 2001. Processor Verification Using Efficient Reductions of the Logic of Uninterpreted Functions to Propositional Logic. ACM Trans. Comput. Logic 2, 1 (Jan. 2001), 93–134.
    [7]
    Jerry R. Burch and David L. Dill. 1994. Automatic Verification of Pipelined Microprocessor Control. In Proceedings of the 6th International Conference on Computer Aided Verification (CAV ’94). Springer-Verlag, London, UK, UK, 68–80. http://dl.acm.org/citation.cfm?id=647763.735662
    [8]
    Krishnendu Chatterjee, Amir Kafshdar Goharshady, Rasmus Ibsen-Jensen, and Andreas Pavlogiannis. 2016. Algorithms for Algebraic Path Properties in Concurrent Systems of Constant Treewidth Components. In Proceedings of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL ’16). ACM, New York, NY, USA, 733–747.
    [9]
    Krishnendu Chatterjee, Rasmus Ibsen-Jensen, Andreas Pavlogiannis, and Prateesh Goyal. 2015. Faster Algorithms for Algebraic Path Properties in Recursive State Machines with Constant Treewidth. In Proceedings of the 42Nd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL ’15). ACM, New York, NY, USA, 97–109.
    [10]
    Professor Bruno Courcelle and Dr Joost Engelfriet. 2012. Graph Structure and Monadic Second-Order Logic: A LanguageTheoretic Approach (1st ed.). Cambridge University Press, New York, NY, USA.
    [11]
    Isil Dillig, Thomas Dillig, and Alex Aiken. 2011. Precise Reasoning for Programs Using Containers. In Proceedings of the 38th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL ’11). ACM, New York, NY, USA, 187–200.
    [12]
    Javier Esparza, David Hansel, Peter Rossmanith, and Stefan Schwoon. 2000. Efficient Algorithms for Model Checking Pushdown Systems. In Proceedings of the 12th International Conference on Computer Aided Verification (CAV ’00). SpringerVerlag, London, UK, UK, 232–247. http://dl.acm.org/citation.cfm?id=647769.734087
    [13]
    Javier Esparza and Jens Knoop. 1999. An Automata-Theoretic Approach to Interprocedural Data-Flow Analysis. In Foundations of Software Science and Computation Structures, Wolfgang Thomas (Ed.). Springer Berlin Heidelberg, Berlin, Heidelberg, 14–30.
    [14]
    Azadeh Farzan, Zachary Kincaid, and Andreas Podelski. 2014. Proofs That Count. In Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL ’14). ACM, New York, NY, USA, 151–164.
    [15]
    Azadeh Farzan, Zachary Kincaid, and Andreas Podelski. 2015. Proof Spaces for Unbounded Parallelism. In Proceedings of the 42Nd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL ’15). ACM, New York, NY, USA, 407–420.
    [16]
    Patrice Godefroid and Mihalis Yannakakis. 2013. Analysis of Boolean Programs. In Proceedings of the 19th International Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS’13). Springer-Verlag, Berlin, Heidelberg, 214–229.
    [17]
    Guillem Godoy and Ashish Tiwari. 2009. Invariant Checking for Programs with Procedure Calls. In Proceedings of the 16th International Symposium on Static Analysis (SAS ’09). Springer-Verlag, Berlin, Heidelberg, 326–342.
    [18]
    Philippe Granger. 1991. Static Analysis of Linear Congruence Equalities Among Variables of a Program. In Proceedings of the International Joint Conference on Theory and Practice of Software Development on Colloquium on Trees in Algebra and Programming (CAAP ’91): Vol 1 (TAPSOFT ’91). Springer-Verlag New York, Inc., New York, NY, USA, 169–192. http://dl.acm.org/citation.cfm?id=111310.111320
    [19]
    Sumit Gulwani and George C. Necula. 2004a. Global Value Numbering Using Random Interpretation. In Proceedings of the 31st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL ’04). ACM, New York, NY, USA, 342–352.
    [20]
    Sumit Gulwani and George C Necula. 2004b. A polynomial-time algorithm for global value numbering. In International Static Analysis Symposium. Springer, 212–227.
    [21]
    Sumit Gulwani and Ashish Tiwari. 2006. Assertion Checking over Combined Abstraction of Linear Arithmetic and Uninterpreted Functions. In Proceedings of the 15th European Conference on Programming Languages and Systems (ESOP’06). Springer-Verlag, Berlin, Heidelberg, 279–293.
    [22]
    Sumit Gulwani and Ashish Tiwari. 2007. Assertion Checking Unified. In Proceedings of the 8th International Conference on Verification, Model Checking, and Abstract Interpretation (VMCAI’07). Springer-Verlag, Berlin, Heidelberg, 363–377. http://dl.acm.org/citation.cfm?id=1763048.1763086
    [23]
    Matthias Heizmann, Jochen Hoenicke, and Andreas Podelski. 2009. Refinement of Trace Abstraction. In Proceedings of the 16th International Symposium on Static Analysis (SAS ’09). Springer-Verlag, Berlin, Heidelberg, 69–85.
    [24]
    Matthias Heizmann, Jochen Hoenicke, and Andreas Podelski. 2010. Nested Interpolants. In Proceedings of the 37th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL ’10). ACM, New York, NY, USA, 471–482.
    [25]
    Matthias Heizmann, Jochen Hoenicke, and Andreas Podelski. 2013. Software Model Checking for People Who Love Automata. In Computer Aided Verification, Natasha Sharygina and Helmut Veith (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg, 36–52.
    [26]
    Richard M. Karp and Raymond E. Miller. 1969. Parallel Program Schemata. J. Comput. Syst. Sci. 3, 2 (May 1969), 147–195.
    [27]
    Michael Karr. 1976. Affine Relationships Among Variables of a Program. Acta Inf. 6, 2 (June 1976), 133–151.
    [28]
    S. Rao Kosaraju. 1982. Decidability of Reachability in Vector Addition Systems (Preliminary Version). In Proceedings of the Fourteenth Annual ACM Symposium on Theory of Computing (STOC ’82). ACM, New York, NY, USA, 267–281.
    [29]
    Christof Löding, P. Madhusudan, and Lucas Peña. 2017. Foundations for Natural Proofs and Quantifier Instantiation. Proc. ACM Program. Lang. 2, POPL, Article 10 (Dec. 2017), 30 pages.
    [30]
    Nuno P. Lopes and José Monteiro. 2016. Automatic equivalence checking of programs with uninterpreted functions and integer arithmetic. International Journal on Software Tools for Technology Transfer 18, 4 (01 Aug 2016), 359–374.
    [31]
    P. Madhusudan and Gennaro Parlato. 2011. The Tree Width of Auxiliary Storage. In Proceedings of the 38th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL ’11). ACM, New York, NY, USA, 283–294.
    [32]
    Umang Mathur, P. Madhusudan, and Mahesh Viswanathan. 2018. Decidable Verification of Uninterpreted Programs. CoRR abs/1811.00192 (2018). http://arxiv.org/abs/1811.00192
    [33]
    Ernst W. Mayr. 1981. An Algorithm for the General Petri Net Reachability Problem. In Proceedings of the Thirteenth Annual ACM Symposium on Theory of Computing (STOC ’81). ACM, New York, NY, USA, 238–246.
    [34]
    Markus Müller-Olm, Oliver Rüthing, and Helmut Seidl. 2005. Checking Herbrand Equalities and Beyond. In Proceedings of the 6th International Conference on Verification, Model Checking, and Abstract Interpretation (VMCAI’05). Springer-Verlag, Berlin, Heidelberg, 79–96.
    [35]
    Markus Müller-Olm and Helmut Seidl. 2004. A Note on Karr’s Algorithm. In Automata, Languages and Programming, Josep Díaz, Juhani Karhumäki, Arto Lepistö, and Donald Sannella (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg, 1016–1028.
    [36]
    Markus Müller-Olm and Helmut Seidl. 2005. A Generic Framework for Interprocedural Analysis of Numerical Properties. In Proceedings of the 12th International Conference on Static Analysis (SAS’05). Springer-Verlag, Berlin, Heidelberg, 235–250.
    [37]
    Edgar Pek, Xiaokang Qiu, and P. Madhusudan. 2014. Natural Proofs for Data Structure Manipulation in C Using Separation Logic. In Proceedings of the 35th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI ’14). ACM, New York, NY, USA, 440–451.
    [38]
    Xiaokang Qiu, Pranav Garg, Andrei Ştefănescu, and Parthasarathy Madhusudan. 2013. Natural Proofs for Structure, Data, and Separation. In Proceedings of the 34th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI ’13). ACM, New York, NY, USA, 231–242.
    [39]
    Neil Robertson and Paul D Seymour. 1983. Graph minors. I. Excluding a forest. Journal of Combinatorial Theory, Series B 35, 1 (1983), 39–61.
    [40]
    Stefan Schwoon. 2002. Model-Checking Pushdown Systems. Ph.D. Thesis. Technische Universität München. http://www.lsv. ens-cachan.fr/Publis/PAPERS/PDF/schwoon-phd02.pdf
    [41]
    D. Seese. 1991. The structure of the models of decidable monadic theories of graphs. Annals of Pure and Applied Logic 53, 2 (1991), 169 – 195.

    Cited By

    View all
    • (2024)An Infinite Needle in a Finite Haystack: Finding Infinite Counter-Models in Deductive VerificationProceedings of the ACM on Programming Languages10.1145/36328758:POPL(970-1000)Online publication date: 5-Jan-2024
    • (2024)Verification of message-passing uninterpreted programsScience of Computer Programming10.1016/j.scico.2023.103075234:COnline publication date: 1-May-2024
    • (2022)Be realisticProceedings of the Third International Workshop on Automated Program Repair10.1145/3524459.3527346(31-32)Online publication date: 19-May-2022
    • Show More Cited By

    Index Terms

    1. Decidable verification of uninterpreted programs

        Recommendations

        Comments

        Information & Contributors

        Information

        Published In

        cover image Proceedings of the ACM on Programming Languages
        Proceedings of the ACM on Programming Languages  Volume 3, Issue POPL
        January 2019
        2275 pages
        EISSN:2475-1421
        DOI:10.1145/3302515
        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: 02 January 2019
        Published in PACMPL Volume 3, Issue POPL

        Permissions

        Request permissions for this article.

        Check for updates

        Author Tags

        1. Coherence
        2. Decidability
        3. Program Verification
        4. Streaming Congruence Closure
        5. Uninterpreted Programs

        Qualifiers

        • Research-article

        Funding Sources

        Contributors

        Other Metrics

        Bibliometrics & Citations

        Bibliometrics

        Article Metrics

        • Downloads (Last 12 months)95
        • Downloads (Last 6 weeks)13
        Reflects downloads up to 11 Aug 2024

        Other Metrics

        Citations

        Cited By

        View all
        • (2024)An Infinite Needle in a Finite Haystack: Finding Infinite Counter-Models in Deductive VerificationProceedings of the ACM on Programming Languages10.1145/36328758:POPL(970-1000)Online publication date: 5-Jan-2024
        • (2024)Verification of message-passing uninterpreted programsScience of Computer Programming10.1016/j.scico.2023.103075234:COnline publication date: 1-May-2024
        • (2022)Be realisticProceedings of the Third International Workshop on Automated Program Repair10.1145/3524459.3527346(31-32)Online publication date: 19-May-2022
        • (2022)Learning formulas in finite variable logicsProceedings of the ACM on Programming Languages10.1145/34986716:POPL(1-28)Online publication date: 12-Jan-2022
        • (2022)Collaborative Verification of Uninterpreted ProgramsTheoretical Aspects of Software Engineering10.1007/978-3-031-10363-6_10(148-154)Online publication date: 8-Jul-2022
        • (2022)Temporal Stream Logic modulo TheoriesFoundations of Software Science and Computation Structures10.1007/978-3-030-99253-8_17(325-346)Online publication date: 29-Mar-2022
        • (2021)Trace Abstraction-Based Verification for Uninterpreted ProgramsFormal Methods10.1007/978-3-030-90870-6_29(545-562)Online publication date: 10-Nov-2021
        • (2020)Dark patternsCommunications of the ACM10.1145/339788463:9(42-47)Online publication date: 21-Aug-2020
        • (2020)Decidable Synthesis of Programs with Uninterpreted FunctionsComputer Aided Verification10.1007/978-3-030-53291-8_32(634-657)Online publication date: 21-Jul-2020
        • (2020)What’s Decidable About Program Verification Modulo Axioms?Tools and Algorithms for the Construction and Analysis of Systems10.1007/978-3-030-45237-7_10(158-177)Online publication date: 17-Apr-2020
        • Show More Cited By

        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