paperbot · PL 论文追踪

全部论文 待读 收藏

P2 AADT: Abstract Abstract Data Types

AADT:抽象抽象数据类型
OOPSLA 10(OOPSLA2)2026匹配度 3/10 · 论文属于抽象解释与程序分析的基础理论,不涉及机器学习/Agentic程序、LLM辅助分析、浮点程序分析或贝叶斯程序分析等用户核心研究方向;但抽象解释是程序分析的基础,可能对理解静态分析技术有间接参考价值。引用 1 inbox
Julien Simonnet, Matthieu Lemerre, Mihaela Sighireanu
crossref: 2026-10-02

AI 速览

一句话:提出开放格与 AADT,以可组合抽象变换器支持结构化值的关系与分离推理,提升抽象解释精度。

操作复合数据结构的程序证明需同时支持分离推理(如指针可指向不同数组)与关系推理。现有抽象解释器难以兼顾:非关系设计可组合抽象域但丢失关系,基于赋值的关系设计则阻碍复用。本文提出开放格与抽象抽象数据类型(AADT),为结构化值构建精确可复用抽象域。开放格用共享符号值与抽象赋值域约束推广经典格,支持跨独立抽象的关系推理;AADT 是镜像具体类型(地址、记录、联合、变体、数组及嵌套)的组合变换器,多数精确。作者形式化并实现于 C 与二进制分析框架,实验显示精度优于先进抽象解释器且时间相当,并支持反例生成。

问题
如何在一套抽象域中同时支持复合数据结构的分离推理与关系推理,并保持模块化、可组合和可复用。
方法
提出开放格与 AADT:开放格共享符号值并由抽象赋值域约束;AADT 按具体数据类型结构组合抽象变换器,并加以形式化与实现。
评估
在 C 与二进制程序分析框架中实现,实验对比先进抽象解释器,精度提升且分析时间相当,并可用于反例生成。
原文摘要(Abstract)

Proving properties of programs that manipulate compound data structures requires both disjunctive reasoning (e.g., a pointer may target different arrays) and relational reasoning. Existing abstract interpreters struggle to combine both: non-relational designs support modular composition of abstract domains but lose relations, while assignment-based relational designs capture relations but hinder modularity and reuse. We introduce open lattices and abstract abstract datatypes (AADT), a new foundation for building precise and reusable abstract domains for structured values. Open lattices generalize classical lattices by introducing shared symbolic values constrained by an abstract valuation domain, enabling relational reasoning across independently defined abstractions. AADTs are compositional transformers over open lattices that mirror the structure of concrete data types: addresses, records, unions, variants, arrays, and their arbitrary nesting. Because each AADT closely follows the concrete datatype definition, abstract domain operations are modular and easy to reuse or extend. Most AADT transformers that we provide are exact: when the abstract valuation domain is exact, the resulting abstraction is a precise translation of the concrete semantics. This enables applications beyond static analysis, such as counter-example generation. We formalize open lattices and AADTs, present key instances, and implement them in a framework for the analysis of C and binary programs. Our experiments show precision gains over state-of-the-art abstract interpreters, while maintaining comparable analysis times.

链接与引用

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

BibTeX
@article{paperbot12089,
  title = {AADT: Abstract Abstract Data Types},
  author = {Julien Simonnet and Matthieu Lemerre and Mihaela Sighireanu},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {10},
  number = {OOPSLA2},
  year = {2026},
  doi = {10.1145/3839523}
}