Sound and Reusable Components for Abstract Interpretation

被引:10
|
作者
Keidel, Sven [1 ]
Erdweg, Sebastian [1 ]
机构
[1] JGU Mainz, Mainz, Germany
来源
PROCEEDINGS OF THE ACM ON PROGRAMMING LANGUAGES-PACMPL | 2019年 / 3卷 / OOPSLA期
关键词
Abstract Interpretation; Static Analysis; Soundness;
D O I
10.1145/3360602
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
interpretation is a methodology for defining sound static analysis. Yet, building sound static analyses for modern programming languages is difficult, because these static analyses need to combine sophisticated abstractions for values, environments, stores, etc. However, static analyses often tightly couple these abstractions in the implementation, which not only complicates the implementation, but also makes it hard to decide which parts of the analyses can be proven sound independently from each other. Furthermore, this coupling makes it hard to combine soundness lemmas for parts of the analysis to a soundness proof of the complete analysis. To solve this problem, we propose to construct static analyses modularly from reusable analysis components. Each analysis component encapsulates a single analysis concern and can be proven sound independently from the analysis where it is used. We base the design of our analysis components on arrow transformers, which allows us to compose analysis components. This composition preserves soundness, which guarantees that a static analysis is sound, if all its analysis components are sound. This means that analysis developers do not have to worry about soundness as long as they reuse sound analysis components. To evaluate our approach, we developed a library of 13 reusable analysis components in Haskell. We use these components to define a k-CFA analysis for PCF and an interval and reaching definition analysis for a While language.
引用
收藏
页数:28
相关论文
共 50 条
  • [1] Sound, Precise, and Fast Abstract Interpretation with Tristate Numbers
    Vishwanathan, Harishankar
    Shachnai, Matan
    Narayana, Srinivas
    Nagarakatte, Santosh
    CGO '22: PROCEEDINGS OF THE 2022 IEEE/ACM INTERNATIONAL SYMPOSIUM ON CODE GENERATION AND OPTIMIZATION (CGO), 2022, : 254 - 265
  • [2] ABSTRACT-DATA-TYPES AS REUSABLE SOFTWARE COMPONENTS - THE CASE FOR TWIN ADTS
    SIKKEL, K
    VANVLIET, JC
    SOFTWARE ENGINEERING JOURNAL, 1992, 7 (03): : 177 - 183
  • [3] Sound Symbolic Execution via Abstract Interpretation and Its Application to Security
    Tiraboschi, Ignacio
    Rezk, Tamara
    Rival, Xavier
    VERIFICATION, MODEL CHECKING, AND ABSTRACT INTERPRETATION, VMCAI 2023, 2023, 13881 : 267 - 295
  • [4] Adversities in Abstract Interpretation: Accommodating Robustness by Abstract Interpretation
    Giacobazzi, Roberto
    Mastroeni, Isabella
    Perantoni, Elia
    ACM TRANSACTIONS ON PROGRAMMING LANGUAGES AND SYSTEMS, 2024, 46 (02):
  • [5] Abstract interpretation
    Cousot, P
    ACM COMPUTING SURVEYS, 1996, 28 (02) : 324 - 328
  • [6] On Various Abstract Understandings of Abstract Interpretation
    Cousot, Patrick
    PROCEEDINGS 2015 INTERNATIONAL SYMPOSIUM ON THEORETICAL ASPECTS OF SOFTWARE ENGINEERING, 2015, : 2 - 3
  • [7] Library of reusable components
    Batista, J. Jr.
    Jino, M.
    Proceedings of the SDL Forum, 1991,
  • [8] REUSABLE SPECIFICATION COMPONENTS
    WIRSING, M
    HENNICKER, R
    BREU, R
    LECTURE NOTES IN COMPUTER SCIENCE, 1988, 324 : 121 - 137
  • [9] REUSABLE SOFTWARE COMPONENTS
    WEIDE, BW
    OGDEN, WF
    ZWEBEN, SH
    ADVANCES IN COMPUTERS, 1991, 33 : 1 - 65
  • [10] Specifying Reusable Components
    Polikarpova, Nadia
    Furia, Carlo A.
    Meyer, Bertrand
    VERIFIED SOFTWARE: THEORIES, TOOLS, EXPERIMENTS, 2010, 6217 : 127 - 141