paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Regular Abstractions for Array Systems

数组系统的正则抽象
POPL 8(POPL)2024匹配度 2/10 · 论文属于程序验证与抽象解释,研究数组系统的安全性/活性验证,但不涉及 LLM/Agent、浮点程序分析或贝叶斯程序分析,与用户画像的核心交叉方向不匹配。引用 4 inbox
Chih-Duo Hong, Anthony W. Lin
crossref: 2026-09-10

AI 速览

一句话:提出索引谓词抽象,将数组系统过近似为字符串重写系统,从而自动验证安全性与活性。

本文关注数组系统的安全性与活性验证。数组系统可自然刻画进程数无界的参数化分布式协议,且进程常使用无界域上的进程 ID,使验证极具挑战。作者提出一种基于索引谓词的新型谓词抽象,将数组系统过近似为有限字母表上的字符串重写系统;由此可复用过去二十年发展的字符串重写系统验证技术,特别是正则模型检测。该方法能为 Dijkstra 自稳定协议和 Chang-Roberts 领导者选举协议等难题给出简单且可自动检查的安全性/活性证明。

问题
如何对元素取值于无限域、进程数无界的数组系统(如使用进程 ID 的分布式协议)自动验证安全性与活性。
方法
引入基于索引谓词的谓词抽象,将数组系统过近似为有限字母表上的字符串重写系统,并借助正则模型检测等字符串重写验证方法进行证明。
评估
在 Dijkstra 自稳定协议与 Chang-Roberts 领导者选举协议等挑战性例子上,展示方法能给出简单且可自动验证的安全性与活性证明。
原文摘要(Abstract)

Verifying safety and liveness over array systems is a highly challenging problem. Array systems naturally capture parameterized systems such as distributed protocols with an unbounded number of processes. Such distributed protocols often exploit process IDs during their computation, resulting in array systems whose element values range over an infinite domain. In this paper, we develop a novel framework for proving safety and liveness over array systems. The crux of the framework is to overapproximate an array system as a string rewriting system (i.e. over a finite alphabet) by means of a new predicate abstraction that exploits the so-called indexed predicates. This allows us to tap into powerful verification methods for string rewriting systems that have been heavily developed in the last two decades or so (e.g. regular model checking). We demonstrate how our method yields simple, automatically verifiable proofs of safety and liveness properties for challenging examples, including Dijkstra’s self-stabilizing protocol and the Chang-Roberts leader election protocol.

链接与引用

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

BibTeX
@article{paperbot2630,
  title = {Regular Abstractions for Array Systems},
  author = {Chih-Duo Hong and Anthony W. Lin},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {8},
  number = {POPL},
  year = {2024},
  doi = {10.1145/3632864}
}