paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Spy game: verifying a local generic solver in Iris

Spy game:在 Iris 中验证局部通用求解器
POPL 4(POPL)2019匹配度 2/10 · 论文属于 Iris/分离逻辑形式化验证,关注最小不动点求解器与预言变量,但不涉及 LLM/Agent、静态分析、浮点程序分析或贝叶斯程序分析;与用户当前核心的 PL×AI 交叉方向仅在大 PL 领域上相邻,匹配度低。引用 15 inbox
Paulo Emílio de Vilhena, François Pottier, Jacques-Henri Jourdan
crossref: 2026-09-10

AI 速览

一句话:在 Iris 中验证局部通用求解器的部分正确性,证明其虽用可变状态记忆与窥探,外部行为仍纯且计算最优最小不动点。

本文关注局部通用求解器(local generic solver)的部分正确性验证。该求解器按需求值、增量计算并记忆化最小不动点,用于求解单调方程组;其内部依赖可变状态做 memoization 和 spying(动态依赖发现),但对外表现为纯函数。作者在 Iris 并发分离逻辑中给出规格与证明:求解器计算最优最小不动点。辅助地,论文展示了 Iris 预言变量(prophecy variables)的使用,建立受限的无穷合取规则,并给出 Longley 模函数这一 spying 典型案例的规格与证明。

问题
如何验证一个使用可变内部状态进行记忆化和动态依赖发现(spying)的按需增量最小不动点求解器,并使其对外规格表现为纯函数。
方法
在 Iris 并发分离逻辑中形式化该求解器,使用预言变量、受限无穷合取规则等证明技术,给出部分正确性规格与证明。
评估
验证求解器计算最优最小不动点,并通过对 Longley 模函数等 spying 案例的规格与证明展示方法的有效性。
原文摘要(Abstract)

We verify the partial correctness of a "local generic solver", that is, an on-demand, incremental, memoizing least fixed point computation algorithm. The verification is carried out in Iris, a modern breed of concurrent separation logic. The specification is simple: the solver computes the optimal least fixed point of a system of monotone equations. Although the solver relies on mutable internal state for memoization and for "spying", a form of dynamic dependency discovery, it is apparently pure: no side effects are mentioned in its specification. As auxiliary contributions, we provide several illustrations of the use of prophecy variables, a novel feature of Iris; we establish a restricted form of the infinitary conjunction rule; and we provide a specification and proof of Longley's modulus function, an archetypical example of spying.

链接与引用

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

BibTeX
@article{paperbot570,
  title = {Spy game: verifying a local generic solver in Iris},
  author = {Paulo Emílio de Vilhena and François Pottier and Jacques-Henri Jourdan},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {4},
  number = {POPL},
  year = {2019},
  doi = {10.1145/3371101}
}