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 条
  • [11] Monadic regions
    Fluet, M
    Morrisett, G
    ACM SIGPLAN NOTICES, 2004, 39 (09) : 103 - 114
  • [12] Just do It: Simple Monadic Equational Reasoning
    Gibbons, Jeremy
    Hinze, Ralf
    ACM SIGPLAN NOTICES, 2011, 46 (09) : 2 - 14
  • [13] Lightweight Monadic Regions
    Kiselyov, Oleg
    Shan, Chung-chieh
    ACM SIGPLAN NOTICES, 2009, 44 (02) : 1 - 12
  • [14] Interpreting trust: Abstract and personal trust for people who need interpreters to access services
    Edwards, Rosalind
    Alexander, Claire
    Temple, Bogusia
    SOCIOLOGICAL RESEARCH ONLINE, 2006, 11 (01):
  • [15] Lightweight Monadic Programming in ML
    Swamy, Nikhil
    Guts, Nataliya
    Leijen, Daan
    Hicks, Michael
    ACM SIGPLAN NOTICES, 2011, 46 (09) : 15 - 27
  • [16] Monadic Decomposition
    Veanes, Margus
    Bjorner, Nikolaj
    Nachmanson, Lev
    Bereg, Sergey
    JOURNAL OF THE ACM, 2017, 64 (02)
  • [17] Modular Monadic Meta-Theory
    Delaware, Benjamin
    Keuchel, Steven
    Schrijvers, Tom
    Oliveira, Bruno C. d. S.
    ACM SIGPLAN NOTICES, 2013, 48 (09) : 319 - 330
  • [18] Monadic Second-Order Logic with Arbitrary Monadic Predicates
    Fijalkow, Nathanael
    Paperman, Charles
    MATHEMATICAL FOUNDATIONS OF COMPUTER SCIENCE 2014, PT I, 2014, 8634 : 279 - 290
  • [19] Monadic Second-Order Logic with Arbitrary Monadic Predicates
    Fijalkow, Nathanael
    Paperman, Charles
    ACM TRANSACTIONS ON COMPUTATIONAL LOGIC, 2017, 18 (03)
  • [20] Efficient Hosted Interpreters on the JVM
    Savrun-Yeniceri, Guelfem
    Zhang, Wei
    Zhang, Huahan
    Seckler, Eric
    Li, Chen
    Brunthaler, Stefan
    Larsen, Per
    Franz, Michael
    ACM TRANSACTIONS ON ARCHITECTURE AND CODE OPTIMIZATION, 2014, 11 (01)