paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Compiling with Abstract Interpretation

用抽象解释进行编译
PLDI 8(PLDI)2024匹配度 4/10 · 论文属于抽象解释与编译器结合的核心 PL 工作,可作为静态分析基础理论参考;但与用户当前聚焦的 PL↔AI/Agent、LLM 改进静态分析与形式化验证、浮点程序分析、贝叶斯程序分析等方向没有直接交叉。引用 5 inbox
Dorian Lesbre, Matthieu Lemerre
dblp: 2026-09-10crossref: 2026-09-10

AI 速览

一句话:将抽象解释器转化为编译器,把编译 pass 对应为函子域,并用 SSA 抽象域提升分析精度。

重写与静态分析通常被分开处理,但变换会改变程序内涵性质并影响分析精度,而高效变换也常依赖程序不变量。本文提出把抽象解释器变成编译器:在抽象域标准签名上构造自由代数,将函子域对应为编译 pass,并用前向模拟证明可靠性、用后向模拟刻画完备性。作者以非标准 SSA 签名的抽象域实现到 SSA 的翻译,并将其嵌入抽象解释器。在相近时间与内存复杂度下,基于 SSA 的非关系域比标准非关系域更精确;该域还能恢复分析低级机器码而非源代码时的精度损失,支持符号与语义方法相互精化的分析与编译 pass。

问题
程序重写/编译变换与静态分析虽相互促进,却通常被作为不同技术处理;如何统一二者,使分析精度与编译变换相互受益?
方法
在抽象域标准签名上构造自由代数,将函子域解释为编译 pass,用前向/后向模拟分别对应可靠性与完备性;以非标准 SSA 签名的抽象域实现 SSA 翻译。
评估
把 SSA 翻译嵌入抽象解释器,比较基于 SSA 与标准非关系域的精度及时间/内存复杂度,并考察低级机器码分析场景。
原文摘要(Abstract)

Rewriting and static analyses are mutually beneficial techniques: program transformations change the inten- sional aspects of the program, and can thus improve analysis precision, while some efficient transformations are enabled by specific knowledge of some program invariants. Despite the strong interaction between these techniques, they are usually considered distinct. In this paper, we demonstrate that we can turn abstract interpreters into compilers, using a simple free algebra over the standard signature of abstract domains. Functor domains correspond to compiler passes, for which soundness is translated to a proof of forward simulation, and completeness to backward simulation. We achieve translation to SSA using an abstract domain with a non-standard SSA signature. Incorporating such an SSA translation to an abstract interpreter improves its precision; in particular we show that an SSA-based non-relational domain is always more precise than a standard non-relational domain for similar time and memory complexity. Moreover, such a domain allows recovering from precision losses that occur when analyzing low-level machine code instead of source code. These results help implement analyses or compilation passes where symbolic and semantic methods simultaneously refine each other, and improves precision when compared to doing the passes in sequence. CCS Concepts: • Software and its engineering → Compilers ; Formal Software verification; • Theory of computation → Program analysis ; Program verification ; Abstraction ; Equational logic and rewriting.

链接与引用

DOI 原文 · PDF(开放获取) · DBLP

BibTeX
@article{LesbreL24,
  title = {Compiling with Abstract Interpretation},
  author = {Dorian Lesbre and Matthieu Lemerre},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {8},
  number = {PLDI},
  year = {2024},
  doi = {10.1145/3656392}
}