Monadic Abstract Interpreters

被引:20
作者
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 条
[41]   A Monadic Approach to Modular Verification [J].
Michelland, Sebastien ;
Zakowski, Yannick ;
Gonnord, Laure .
PROCEEDINGS OF THE ACM ON PROGRAMMING LANGUAGES-PACMPL, 2024, 8 (ICFP)
[42]   Laws of Monadic Error Handling [J].
Nestra, Harmel .
THEORETICAL ASPECTS OF COMPUTING - ICTAC 2019, 2019, 11884 :372-391
[43]   Abstract Parsing for Two-staged Languages with Concatenation [J].
Kong, Soonho ;
Choi, Wontae ;
Yi, Kwangkeun .
ACM SIGPLAN NOTICES, 2010, 45 (02) :109-116
[44]   Benchmarking Prolog Interpreters [J].
Martins, A. L. ;
Silva, A. F. .
IEEE LATIN AMERICA TRANSACTIONS, 2011, 9 (07) :1079-1086
[45]   Rule interpreters in ELEKTRA [J].
Craig, ID .
KYBERNETES, 1995, 24 (03) :37-&
[46]   Monadic Refinements for Relational Cost Analysis [J].
Radicek, Ivan ;
Barthe, Gilles ;
Gaboardi, Marco ;
Garg, Deepak ;
Zuleger, Florian .
PROCEEDINGS OF THE ACM ON PROGRAMMING LANGUAGES-PACMPL, 2018, 2 (POPL)
[47]   A framework for the integration of partial evaluation and abstract interpretation of logic programs [J].
Leuschel, M .
ACM TRANSACTIONS ON PROGRAMMING LANGUAGES AND SYSTEMS, 2004, 26 (03) :413-463
[48]   A precise monadic dynamic slicing method [J].
Zhang, Yingzhou .
KNOWLEDGE-BASED SYSTEMS, 2017, 115 :40-54
[49]   Declarative Pearl: Deriving Monadic Quicksort [J].
Mu, Shin-Cheng ;
Chiang, Tsung-Ju .
FUNCTIONAL AND LOGIC PROGRAMMING, FLOPS 2020, 2020, 12073 :124-138
[50]   Towards a Comprehensive Theory of Monadic Effects [J].
Filinski, Andrzej .
ICFP 11 - PROCEEDINGS OF THE 2011 ACM SIGPLAN: INTERNATIONAL CONFERENCE ON FUNCTIONAL PROGRAMMING, 2011, :1-1