Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/1133981.1134029acmconferencesArticle/Chapter ViewAbstractPublication PagespldiConference Proceedingsconference-collections
Article

Termination proofs for systems code

Published: 11 June 2006 Publication History
  • Get Citation Alerts
  • Abstract

    Program termination is central to the process of ensuring that systems code can always react. We describe a new program termination prover that performs a path-sensitive and context-sensitive program analysis and provides capacity for large program fragments (i.e. more than 20,000 lines of code) together with support for programming language features such as arbitrarily nested loops, pointers, function-pointers, side-effects, etc.We also present experimental results on device driver dispatch routines from theWindows operating system. The most distinguishing aspect of our tool is how it shifts the balance between the two tasks of constructing and respectively checking the termination argument. Checking becomes the hard step. In this paper we show how we solve the corresponding challenge of checking with binary reachability analysis.

    References

    [1]
    I. Balaban, A. Pnueli, and L. D. Zuck. Shape analysis by predicate abstraction. In VMCAI'2005: Verification, Model Checking, and Abstract Interpretation, volume 3385 of LNCS. Springer, 2005.
    [2]
    T. Ball, E. Bounimova, B. Cook, V. Levin, J. Lichtenberg, C. McGarvey, B. Ondrusek, S. K. Rajamani, and A. Ustuner. Thorough static analysis of device drivers. In EuroSys'06: European Systems Conference, 2006.
    [3]
    A. Biere, C. Artho, and V. Schuppan. Liveness checking as safety checking. In FMICS'02: Formal Methods for Industrial Critical Systems, volume 66(2) of ENTCS, 2002.
    [4]
    B. Blanchet, P. Cousot, R. Cousot, J. Feret, L. Mauborgne, A. Miné, D. Monniaux, and X. Rival. A static analyzer for large safetycritical software. In PLDI'2003: Programming Language Design and Implementation, pages 196--207. ACM Press, 2003.
    [5]
    F. Bourdoncle. Abstract debugging of higher-order imperative languages. In PLDI'1993: Programming Language Design and Implementation, pages 46--55. ACM Press, 1993.
    [6]
    A. Bradley, Z. Manna, and H. Sipma. Linear ranking with reachability. In CAV'05: Conference on Computer Aided Verification, volume 3576 of LNCS. Springer, 2005.
    [7]
    A. Bradley, Z. Manna, and H. Sipma. Termination of polynomial programs. In VMCAI'2005: Verification, Model Checking, and Abstract Interpretation, volume 3385 of LNCS. Springer, 2005.
    [8]
    E. Clarke, D. Kroening, and F. Lerda. A tool for checking ANSI-C programs. In TACAS'04: Tools and Algorithms for the Construction and Analysis of Systems, volume 2988 of LNCS, pages 168--176. Springer, 2004.
    [9]
    M. Codish and C. Taboch. A semantic basis for the termination analysis of logic programs. The Journal of Logic Programming, 41(1):103--123, 1999.
    [10]
    M. Colón and H. Sipma. Practical methods for proving program termination. In CAV'2002: Computer Aided Verification, volume 2404 of LNCS, pages 442--454. Springer, 2002.
    [11]
    E. Contejean, C. Marché, B. Monate, and X. Urbain. Proving Termination of Rewriting with CiME. In Extended Abstracts of the 6th International Workshop on Termination, WST'03, pages 71--73, June 2003.
    [12]
    B. Cook, D. Kroening, and N. Sharygina. Cogent: Accurate theorem proving for program verification. In CAV'05: Conference on Computer Aided Verification, 2005.
    [13]
    B. Cook, A. Podelski, and A. Rybalchenko. Abstraction refinement for termination. In SAS'2005: Static Analysis Symposium, volume 3672 of LNCS, pages 87--101. Springer, 2005.
    [14]
    P. Cousot. Proving program invariance and termination by parametric abstraction, lagrangian relaxation and semidefinite programming. In VMCAI'2005: Verification, Model Checking, and Abstract Interpretation, volume 3385 of LNCS. Springer, 2005.
    [15]
    R. W. Floyd. Assigning meanings to programs. In J. T. Schwartz, editor, Mathematical Aspects of Computer Science, volume 19 of Proceedings of Symposia in Applied Mathematics, pages 19--32. American Mathematical Society, 1967.
    [16]
    J. Giesl, R. Thiemann, P. Schneider-Kamp, and S. Falke. Automated termination proofs with AProVE. In RTA'2004: Rewriting Techniques and Applications, volume 3091 of LNCS, pages 210--220. Springer, 2004.
    [17]
    T. A. Henzinger, R. Jhala, R. Majumdar, and K. L. McMillan. Abstractions from proofs. In POPL'2004: Principles of Programming Languages, pages 232--244. ACM Press, 2004.
    [18]
    C. S. Lee, N. D. Jones, and A. M. Ben-Amram. The size-change principle for program termination. In POPL'2001: Principles of Programming Languages, volume 36, 3 of ACM SIGPLAN Notices, pages 81--92. ACM Press, 2001.
    [19]
    N. Lindenstrauss, Y. Sagiv, and A. Serebrenik. TermiLog: A system for checking termination of queries to logic programs. In CAV'97: Computer-Aided Verification, LNCS, pages 444--447. Springer, 1997.
    [20]
    Z. Manna and A. Pnueli. Temporal verification of reactive systems: Safety. Springer, 1995.
    [21]
    Microsoft Corporation. Windows Static Driver Verifier. Available at www.microsoft.com/whdc/devtools/tools/SDV.mspx, July 2004.
    [22]
    A. Podelski and A. Rybalchenko. A complete method for the synthesis of linear ranking functions. In VMCAI'2004: Verification, Model Checking, and Abstract Interpretation, volume 2937 of LNCS, pages 239--251. Springer, 2004.
    [23]
    A. Podelski and A. Rybalchenko. Transition invariants. In LICS'2004: Logic in Computer Science, pages 32--41. IEEE, 2004.
    [24]
    A. Turing. On computable numbers, with an application to the Entscheidungsproblem. London Mathematical Society, 42(2):230--265, 1936.
    [25]
    E. Yahav, T. Reps, M. Sagiv, and R.Wilhelm. Verifying temporal heap properties specified via evolution logic. In ESOP'2003: European Symp. on Programming, volume 2618 of LNCS, pages 204--222. Springer, 2003.

    Cited By

    View all
    • (2024)Breaking the Mold: Nonlinear Ranking Function Synthesis Without TemplatesComputer Aided Verification10.1007/978-3-031-65627-9_21(431-452)Online publication date: 26-Jul-2024
    • (2024)Generalized Weighted Type Graphs for Termination of Graph Transformation SystemsGraph Transformation10.1007/978-3-031-64285-2_3(39-58)Online publication date: 2-Jul-2024
    • (2022)Using graph neural networks for program terminationProceedings of the 30th ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3540250.3549095(910-921)Online publication date: 7-Nov-2022
    • Show More Cited By

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM Conferences
    PLDI '06: Proceedings of the 27th ACM SIGPLAN Conference on Programming Language Design and Implementation
    June 2006
    438 pages
    ISBN:1595933204
    DOI:10.1145/1133981
    • cover image ACM SIGPLAN Notices
      ACM SIGPLAN Notices  Volume 41, Issue 6
      Proceedings of the 2006 PLDI Conference
      June 2006
      426 pages
      ISSN:0362-1340
      EISSN:1558-1160
      DOI:10.1145/1133255
      Issue’s Table of Contents
    Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

    Sponsors

    In-Cooperation

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 11 June 2006

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. formal verification
    2. model checking
    3. program termination
    4. program verification

    Qualifiers

    • Article

    Conference

    PLDI06
    Sponsor:

    Acceptance Rates

    Overall Acceptance Rate 406 of 2,067 submissions, 20%

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

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

    Other Metrics

    Citations

    Cited By

    View all
    • (2024)Breaking the Mold: Nonlinear Ranking Function Synthesis Without TemplatesComputer Aided Verification10.1007/978-3-031-65627-9_21(431-452)Online publication date: 26-Jul-2024
    • (2024)Generalized Weighted Type Graphs for Termination of Graph Transformation SystemsGraph Transformation10.1007/978-3-031-64285-2_3(39-58)Online publication date: 2-Jul-2024
    • (2022)Using graph neural networks for program terminationProceedings of the 30th ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3540250.3549095(910-921)Online publication date: 7-Nov-2022
    • (2022)What’s decidable about linear loops?Proceedings of the ACM on Programming Languages10.1145/34987276:POPL(1-25)Online publication date: 12-Jan-2022
    • (2022)Logarithm and program testingProceedings of the ACM on Programming Languages10.1145/34987266:POPL(1-26)Online publication date: 12-Jan-2022
    • (2022)Pirouette: higher-order typed functional choreographiesProceedings of the ACM on Programming Languages10.1145/34986846:POPL(1-27)Online publication date: 12-Jan-2022
    • (2022)Extending Intel-x86 consistency and persistency: formalising the semantics of Intel-x86 memory types and non-temporal storesProceedings of the ACM on Programming Languages10.1145/34986836:POPL(1-31)Online publication date: 12-Jan-2022
    • (2022)Bottom-up synthesis of recursive functional programs using angelic executionProceedings of the ACM on Programming Languages10.1145/34986826:POPL(1-29)Online publication date: 12-Jan-2022
    • (2021)Termination analysis without the tearsProceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation10.1145/3453483.3454110(1296-1311)Online publication date: 19-Jun-2021
    • (2021)Proving non-termination by program reversalProceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation10.1145/3453483.3454093(1033-1048)Online publication date: 19-Jun-2021
    • Show More Cited By

    View Options

    Get Access

    Login options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media