论文标题
在抽象解释中解释上升和下降的阶段
Decoupling the ascending and descending phases in Abstract Interpretation
论文作者
论文摘要
抽象解释通过模仿其在抽象域上的具体固定点计算$ \ mathbb {a} $来近似程序的语义。摘要(后)固定点计算经典分为两个阶段:上升阶段,以延伸为外推操作员来强制终止,然后使用降级阶段,以窄差为插值操作员,以减轻由归因引入的精确损失的效果。在本文中,我们提出了这种经典方法的简单变化,在这种方法中,更有效地恢复了精度,我们将这两个阶段解除了:尤其是在开始下降阶段之前,我们替换了更精确的抽象域$ \ mathbb {d} $。通过将其作为A $^2 $ i框架的实例施放,可以证明该方法的正确性是合理的。在一个简单的示例中演示了新技术后,我们总结了初步实验评估的结果,表明它能够为域的多种选择获得$ \ Mathbb {a} $和$ \ Mathbb {D} $的多种选择。
Abstract Interpretation approximates the semantics of a program by mimicking its concrete fixpoint computation on an abstract domain $\mathbb{A}$. The abstract (post-) fixpoint computation is classically divided into two phases: the ascending phase, using widenings as extrapolation operators to enforce termination, is followed by a descending phase, using narrowings as interpolation operators, so as to mitigate the effect of the precision losses introduced by widenings. In this paper we propose a simple variation of this classical approach where, to more effectively recover precision, we decouple the two phases: in particular, before starting the descending phase, we replace the domain $\mathbb{A}$ with a more precise abstract domain $\mathbb{D}$. The correctness of the approach is justified by casting it as an instance of the A$^2$I framework. After demonstrating the new technique on a simple example, we summarize the results of a preliminary experimental evaluation, showing that it is able to obtain significant precision improvements for several choices of the domains $\mathbb{A}$ and $\mathbb{D}$.