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] A functional correspondence between monadic evaluators and abstract machines for languages with computational effects
    Ager, MS
    Danvy, O
    Midtgaard, J
    THEORETICAL COMPUTER SCIENCE, 2005, 342 (01) : 149 - 172
  • [3] TSL: A System for Generating Abstract Interpreters and its Application to Machine-Code Analysis
    Lim, Junghee
    Reps, Thomas
    ACM TRANSACTIONS ON PROGRAMMING LANGUAGES AND SYSTEMS, 2013, 35 (01):
  • [4] Compositional Soundness Proofs of Abstract Interpreters
    Keidel, Sven
    Poulsen, Casper Bach
    Erdweg, Sebastian
    PROCEEDINGS OF THE ACM ON PROGRAMMING LANGUAGES, 2018,
  • [5] Compositional Soundness Proofs of Abstract Interpreters
    Keidel, Sven
    Poulsen, Casper Bach
    Erdweg, Sebastian
    PROCEEDINGS OF THE ACM ON PROGRAMMING LANGUAGES-PACMPL, 2018, 2
  • [6] Galois Transformers and Modular Abstract Interpreters Reusable Metatheory for Program Analysis
    Darais, David
    Might, Matthew
    Van Horn, David
    ACM SIGPLAN NOTICES, 2015, 50 (10) : 552 - 571
  • [7] Lifting abstract interpreters to quantified logical domains
    Gulwani, Sumit
    McCloskey, Bill
    Tiwari, Ashish
    ACM SIGPLAN NOTICES, 2008, 43 (01) : 235 - 246
  • [8] Refunctionalization of Abstract Abstract Machines Bridging the Gap between Abstract Abstract Machines and Abstract Definitional Interpreters (Functional Pearl)
    Wei, Guannan
    Decker, James
    Rompf, Tiark
    PROCEEDINGS OF THE ACM ON PROGRAMMING LANGUAGES, 2018,
  • [9] Towards a Comprehensive Theory of Monadic Effects
    Filinski, Andrzej
    ACM SIGPLAN NOTICES, 2011, 46 (09) : 1 - 1
  • [10] Abstracting Abstract Machines
    Van Horn, David
    Might, Matthew
    ACM SIGPLAN NOTICES, 2010, 45 (09) : 51 - 62