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

A framework for numeric analysis of array operations

Published: 12 January 2005 Publication History
  • Get Citation Alerts
  • Abstract

    Automatic discovery of relationships among values of array elements is a challenging problem due to the unbounded nature of arrays. We present a framework for analyzing array operations that is capable of capturing numeric properties of array elements.In particular, the analysis is able to establish that all array elements are initialized by an array-initialization loop, as well as to discover numeric constraints on the values of initialized elements.The analysis is based on the combination of canonical abstraction and summarizing numeric domains. We describe a prototype implementation of the analysis and discuss our experience with applying the prototype to several examples, including the verification of correctness of an insertion-sort procedure.

    References

    [1]
    R. Bagnara, E. Ricci, E. Zaffanella, and P. M. Hill. Possibly not closed convex polyhedra and the parma polyhedra library. In Static Analysis Sym ., volume 2477, pages 213--229, 2002.
    [2]
    B. Blanchet, P. Cousot, R. Cousot, J. Feret, L. Mauborgne, A. Miné, D. Monniaux, and X. Rival. Design and implementation of a special-purpose static program analyzer for safety-critical real-time embedded software. In The Essence of Computation: Complexity, Analysis, Transformation., pages 85--108. Springer-Verlag, 2002.
    [3]
    P. Cousot and R. Cousot. Abstract interpretation: A unified lattice model for static analysis of programs by construction of approximation of fixed points. In Symp. on Princ. of Prog. Lang., pages 238--252, New York, NY, 1977. ACM Press.
    [4]
    P. Cousot and R. Cousot. Systematic design of program analysis frameworks. In Symp. on Princ. of Prog. Lang., pages 269--282, New York, NY, 1979. ACM Press.
    [5]
    P. Cousot and N. Halbwachs. Automatic discovery of linear constraints among variables of a program. In Symp. on Princ. of Prog. Lang., 1978.
    [6]
    C. Flanagan and S. Qadeer. Predicate abstraction for software verification. In Symp. on Princ.of Prog. Lang., pages 191--202, 2002.
    [7]
    D. Gopan, F. DiMaio, N. Dor,T. Reps, and M. Sagiv. Numeric domains with summarized dimensions. In Tools and Algorithms for the Construction and Analysis of Systems, pages 512--529, 2004.
    [8]
    N. Halbwachs, Y.-E. Proy, and P. Roumanoff. Verification of real-time systems using linear relation analysis. Formal Methods in System Design, 11(2):157--185, 1997.
    [9]
    S. K. Lahiri and R. E. Bryant. Indexed predicate discovery fof unbounded system verification. In Int. Conf.on Computer Aided Verification, pages 135--147, 2004.
    [10]
    L. Lamport. A new approach to proving the correctness of multiprocess programs. Trans. on Prog. Lang. and Syst., 1(1):84--97, July 1979.
    [11]
    T. Lev-Ami and M. Sagiv. TVLA: A system for implementing static analyses. In Static Analysis Symp.,pages 280--301, 2000.
    [12]
    R. Manevich,M. Sagiv,G. Ramalingam, and J. Field. Partially disjunctive heap abstraction. In Static Analysis Symp., pages 265--279, 2004.
    [13]
    F. Masdupuy. Array Indices Relational Semantic Analysis using Rational Cosets and Trapezoids. PhD thesis, Ecole Polytechnique, 1993.
    [14]
    A. Mine. The octagon abstract domain. In Proc. Eighth Working Conf. on Rev. Eng., pages 310--322, 2001.
    [15]
    A. Mine. A few graph-based relational numerical abstract domains. In Static Analysis Symp., pages 117--132, 2002.
    [16]
    G. Peterson. Myths about the mutual exclusion problem. Information Processing Letters, 12(3):115--116, June 1981.
    [17]
    T. Reps, M.S agiv, and A. Loginov. Finite differencing of logical formulas for static analysis. In Eurorean Symp. on Programming, pages 380--398, 2003.
    [18]
    T. Reps, M. Sagiv, and G. Yorsh. Symbolic implementation of the best transformer. In Verification, Model Checking, and Abstract Interpretation, pages 252--266, 2004.
    [19]
    M. Sagiv, T. Reps, and R. Wilhelm. Parametric shape analysis via 3-valued logic. Trans. on Prog. Lang. and Syst., 24(3):217--298, 2002.
    [20]
    P. Černý. Vérification pa interpétation abstraite de prédicats paramétriques. D.E.A. Report, Univ. Paris VII & ÉÉcole normale supérieure, September 2003.
    [21]
    G. Yorsh, T. Reps, and M. Sagiv. Symbolically computing most-precise abstract operations for shape analysis. In Tools and Algorithms for the Construction and Analysis of Systems, pages 530--545, 2004.

    Cited By

    View all
    • (2022)Relational abstract interpretation of arrays in assembly codeFormal Methods in System Design10.1007/s10703-022-00399-359:1-3(103-135)Online publication date: 2-Oct-2022
    • (2022)Full-program induction: verifying array programs sans loop invariantsInternational Journal on Software Tools for Technology Transfer10.1007/s10009-022-00676-w24:5(843-888)Online publication date: 29-Sep-2022
    • (2021)Diffy: Inductive Reasoning of Array Programs Using Difference InvariantsComputer Aided Verification10.1007/978-3-030-81688-9_42(911-935)Online publication date: 15-Jul-2021
    • Show More Cited By

    Recommendations

    Reviews

    Pierre Jouvelot

    Abstract interpretation is a powerful framework for performing static analysis of computer programs. Some programming constructs, however, such as array data structures, have proven difficult to tackle using this approach. One of the key issues that needs to be addressed when trying to integrate arrays into an existing scalar abstract interpretation is the design of a proper abstract domain, able to statically encode relations among array elements, their indices, and values. In this paper, the authors suggest using a new partitioning scheme for arrays that mixes summary and nonsummary abstract elements; nonsummary elements are associated with array elements whose indices correspond exactly to the value of a scalar variable, while summary ones are used otherwise. This complex abstraction mechanism, whose detailed description is provided in the paper, is able to analyze a variety of simple programs, such as an array-initialization loop or an insertion-sort routine. Other issues related to the abstract interpretation of array programs are briefly addressed, such as performing widening operations on array-based abstract states, which are necessary to complete the analysis of loops in finite time, or specifying the abstract semantics in the presence of array constructs. I found the overall paper to be well organized and easy to read, although a thorough understanding of abstract interpretation is a prerequisite. The authors used motivational examples throughout the presentation, and made an effort to implement their technique and test it on some toy examples. This work should be required reading for researchers interested in the abstract interpretation of imperative languages. Online Computing Reviews Service

    Access critical reviews of Computing literature here

    Become a reviewer for Computing Reviews.

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM SIGPLAN Notices
    ACM SIGPLAN Notices  Volume 40, Issue 1
    Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
    January 2005
    391 pages
    ISSN:0362-1340
    EISSN:1558-1160
    DOI:10.1145/1047659
    Issue’s Table of Contents
    • cover image ACM Conferences
      POPL '05: Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
      January 2005
      402 pages
      ISBN:158113830X
      DOI:10.1145/1040305
      • General Chair:
      • Jens Palsberg,
      • Program Chair:
      • Martín Abadi
    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]

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 12 January 2005
    Published in SIGPLAN Volume 40, Issue 1

    Check for updates

    Author Tags

    1. abstract numeric domains
    2. array analysis
    3. canonical abstraction
    4. program analysis
    5. summarization

    Qualifiers

    • Article

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)25
    • Downloads (Last 6 weeks)1
    Reflects downloads up to 27 Jul 2024

    Other Metrics

    Citations

    Cited By

    View all
    • (2022)Relational abstract interpretation of arrays in assembly codeFormal Methods in System Design10.1007/s10703-022-00399-359:1-3(103-135)Online publication date: 2-Oct-2022
    • (2022)Full-program induction: verifying array programs sans loop invariantsInternational Journal on Software Tools for Technology Transfer10.1007/s10009-022-00676-w24:5(843-888)Online publication date: 29-Sep-2022
    • (2021)Diffy: Inductive Reasoning of Array Programs Using Difference InvariantsComputer Aided Verification10.1007/978-3-030-81688-9_42(911-935)Online publication date: 15-Jul-2021
    • (2020)Proving array properties using data abstractionProceedings of the 9th ACM SIGPLAN International Workshop on Numerical and Symbolic Abstract Domains10.1145/3427762.3430179(17-21)Online publication date: 17-Nov-2020
    • (2020)Verification of an Optimized NTT AlgorithmSoftware Verification10.1007/978-3-030-63618-0_9(144-160)Online publication date: 6-Dec-2020
    • (2020)Verifying Array Manipulating Programs with Full-Program InductionTools and Algorithms for the Construction and Analysis of Systems10.1007/978-3-030-45190-5_2(22-39)Online publication date: 17-Apr-2020
    • (2019)Precise reasoning with structured time, structured heaps, and collective operationsProceedings of the ACM on Programming Languages10.1145/33605833:OOPSLA(1-30)Online publication date: 10-Oct-2019
    • (2019)Parallelization and analysis of selected numerical algorithms using OpenMP and Pluto on symmetric multiprocessing machineData Technologies and Applications10.1108/DTA-05-2018-0040Online publication date: 7-Feb-2019
    • (2019)List.MID: A MIDI-Based Benchmark for Evaluating RDF ListsThe Semantic Web – ISWC 201910.1007/978-3-030-30796-7_16(246-260)Online publication date: 26-Oct-2019
    • (2019)Quantified Invariants via Syntax-Guided SynthesisComputer Aided Verification10.1007/978-3-030-25540-4_14(259-277)Online publication date: 12-Jul-2019
    • 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