Monadic Abstract Interpreters

被引:18
|
作者
Sergey, Ilya
Devriese, Dominique [1 ]
Might, Matthew [2 ]
Midtgaard, Jan [3 ]
Darais, David [4 ]
Clarke, Dave [1 ]
Piessens, Frank [1 ]
机构
[1] Katholieke Univ Leuven, iMinds DistriNet, Louvain, Belgium
[2] Univ Utah, Salt Lake City, UT 84112 USA
[3] Aarhus Univ, DK-8000 Aarhus C, Denmark
[4] Harvard Univ, Cambridge, MA 02138 USA
关键词
Languages; Theory; abstract machines; abstract interpretation; monads; operational semantics; collecting semantics; abstract garbage collection; interpreters; MACHINES;
D O I
10.1145/2499370.2491979
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Recent developments in the systematic construction of abstract interpreters hinted at the possibility of a broad unification of concepts in static analysis. We deliver that unification by showing context-sensitivity, polyvariance, flow-sensitivity, reachability-pruning, heap-cloning and cardinality-bounding to be independent of any particular semantics. Monads become the unifying agent between these concepts and between semantics. For instance, by plugging the same "context-insensitivity monad" into a monadically-parameterized semantics for Java or for the lambda calculus, it yields the expected context-insensitive analysis. To achieve this unification, we develop a systematic method for transforming a concrete semantics into a monadically-parameterized abstract machine. Changing the monad changes the behavior of the machine. By changing the monad, we recover a spectrum of machines-from the original concrete semantics to a monovariant, flow- and context-insensitive static analysis with a singly-threaded heap and weak updates. The monadic parameterization also suggests an abstraction over the ubiquitous monotone fixed-point computation found in static analysis. This abstraction makes it straightforward to instrument an analysis with high-level strategies for improving precision and performance, such as abstract garbage collection and widening. While the paper itself runs the development for continuation-passing style, our generic implementation replays it for direct-style lambda-calculus and Featherweight Java to support generality.
引用
收藏
页码:399 / 409
页数:11
相关论文
共 50 条
  • [1] Formal Reasoning about Layered Monadic Interpreters
    Yoon, Irene
    Zakowski, Yannick
    Zdancewic, Steve
    PROCEEDINGS OF THE ACM ON PROGRAMMING LANGUAGES-PACMPL, 2022, 6 (ICFP):
  • [2] Combining abstract interpreters
    Gulwani, Sumit
    Tiwari, Ashish
    ACM SIGPLAN NOTICES, 2006, 41 (06) : 376 - 386
  • [3] Abstract Interpreters for Free
    Might, Matthew
    STATIC ANALYSIS, 2010, 6337 : 407 - 421
  • [4] An abstract monadic semantics for value recursion
    Moggi, E
    Sabry, A
    RAIRO-THEORETICAL INFORMATICS AND APPLICATIONS, 2004, 38 (04): : 375 - 400
  • [5] Decidable properties for monadic abstract state machines
    Beauquier, D
    ANNALS OF PURE AND APPLIED LOGIC, 2006, 141 (03) : 308 - 319
  • [6] Compositional Soundness Proofs of Abstract Interpreters
    Keidel, Sven
    Poulsen, Casper Bach
    Erdweg, Sebastian
    PROCEEDINGS OF THE ACM ON PROGRAMMING LANGUAGES, 2018,
  • [7] Compositional Soundness Proofs of Abstract Interpreters
    Keidel, Sven
    Poulsen, Casper Bach
    Erdweg, Sebastian
    PROCEEDINGS OF THE ACM ON PROGRAMMING LANGUAGES-PACMPL, 2018, 2
  • [8] TVLA: A system for generating abstract interpreters
    Lev-Ami, T
    Manevich, R
    Sagiv, M
    BUILDING THE INFORMATION SOCIETY, 2004, 156 : 367 - 375
  • [9] Deriving Abstract Interpreters from Skeletal Semantics
    Jensen, Thomas
    Rebiscoul, Vincent
    Schmitt, Alan
    ELECTRONIC PROCEEDINGS IN THEORETICAL COMPUTER SCIENCE, 2023, (387):
  • [10] Lifting abstract interpreters to quantified logical domains
    Gulwani, Sumit
    McCloskey, Bill
    Tiwari, Ashish
    ACM SIGPLAN NOTICES, 2008, 43 (01) : 235 - 246