【24h】

Monadic Abstract Interpreters

机译:Monadic抽象口译员

获取原文

摘要

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.
机译:最近的系统建设抽象口译员的发展暗示了静态分析概念的广泛统一的可能性。我们通过显示与任何特定语义无关的上下文敏感性,多维度,流动性,可达性 - 修剪,堆克隆,堆克隆和基数限制来提供该统一。 Monads成为这些概念和语义之间的统一代理。例如,通过将相同的“上下文 - 不敏感性Monad”插入到Java的单个参数化语义中,或用于λ微积分,产生预期的上下文不区置分析。为实现这一统一,我们开发了一种系统方法,用于将混凝土语义转换为单个参数化抽象机器。更改MONAD会改变机器的行为。通过改变Monad,我们将一系列机器恢复到原始混凝土语义上,以单速,流量和上下文的静态分析,具有单线程堆和弱更新。 Monadic参数化还表明静态分析中发现的普遍存在的单调定点计算上的抽象。这种抽象使仪器简单地实现了具有高级别策略的分析,以提高精度和性能,例如抽象垃圾收集和加宽。虽然纸张本身运行了延续传递风格的开发,但我们的通用实施将其重放为直接风格的Lambda-Calmulus和Featherweight Java来支持一般性。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号