paperbot · PL 论文追踪

全部论文 待读 收藏

P2 A²I: abstract² interpretation

A²I:抽象解释的抽象解释(元抽象解释)
POPL 3(POPL)2019匹配度 4/10 · 论文属于抽象解释与静态分析的理论工作,形式化元抽象解释并用于优化分析算法,与用户关注的PL静态分析基础有一定关联;但未涉及LLM/Agent、浮点程序分析或贝叶斯程序分析,也没有体现AI×PL交叉,因此与当前研究画像匹配度有限。引用 24 inbox
Patrick Cousot, Roberto Giacobazzi, Francesco Ranzato
crossref: 2026-09-10

AI 速览

一句话:提出并形式化离线与在线元抽象解释,用抽象解释分析程序分析器,并据此设计更高效精确的静态分析算法。

论文提出 A²I(抽象解释的抽象解释,亦称元抽象解释),核心思想是将抽象解释应用于基于抽象解释的静态程序分析,从而分析程序分析器自身的性质。文章区分离线 A²I 与在线 A²I:前者在分析前后进行,如 Astrée 的变量打包与告警诊断;后者在分析过程中进行,如 Venet 的余纤维域以及 Halbwachs 等和 Singh 等的变量划分技术。作者对二者给出形式化,并通过 widening 的设计和关系抽象域的分解来说明该概念,展示如何把新的静态分析提取为元抽象解释,以设计高效且精确的程序分析算法。

问题
如何把抽象解释应用于抽象解释式静态分析本身,以分析程序分析器的性质并改进分析算法。
方法
形式化离线与在线元抽象解释,并以 widening 设计和关系抽象域分解为示例。
评估
通过概念与算法示例展示如何从元抽象解释提取新的静态分析,进而设计高效且精确的程序分析算法。
原文摘要(Abstract)

The fundamental idea of Abstract 2 Interpretation (A 2 I), also called meta-abstract interpretation, is to apply abstract interpretation to abstract interpretation-based static program analyses. A 2 I is generally meant to use abstract interpretation to analyse properties of program analysers. A 2 I can be either offline or online. Offline A 2 I is performed either before the program analysis, such as variable packing used by the Astrée program analyser, or after the program analysis, such as in alarm diagnosis. Online A 2 I is performed during the program analysis, such as Venet’s cofibred domains or Halbwachs et al.’s and Singh et al.’s variable partitioning techniques for fast polyhedra/numerical abstract domains. We formalize offline and online meta-abstract interpretation and illustrate this notion with the design of widenings and the decomposition of relational abstract domains to speed-up program analyses. This shows how novel static analyses can be extracted as meta-abstract interpretations to design efficient and precise program analysis algorithms.

链接与引用

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

BibTeX
@article{paperbot636,
  title = {A²I: abstract² interpretation},
  author = {Patrick Cousot and Roberto Giacobazzi and Francesco Ranzato},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {3},
  number = {POPL},
  year = {2019},
  doi = {10.1145/3290355}
}