paperbot · PL 论文追踪

全部论文 待读 收藏

P2 A separation logic for effect handlers

面向效应处理器(effect handlers)的分离逻辑
POPL 5(POPL)2021匹配度 3/10 · 该论文是纯程序验证/分离逻辑工作,研究效应处理器的模块化验证,未涉及 LLM/Agent、浮点程序分析或贝叶斯程序分析,仅与形式化验证这一宽泛背景相关。它不属于用户当前 PL↔AI 交叉的核心方向,也未体现 LLM 辅助验证或工业落地。引用 24 inbox
Paulo Emílio de Vilhena, François Pottier
crossref: 2026-09-10

AI 速览

一句话:提出内建支持浅层与深层效应处理器的分离逻辑,实现局部推理并基于 Iris 完成模块化验证。

用户自定义效应与效应处理器为定界控制提供了一种模块化方法,但如何在同时存在效应处理器与堆可变状态等原始效应时模块化地规约和验证程序,至今仍缺乏答案。本文提出一个内建支持浅层与深层效应处理器的分离逻辑。程序片段的规约包含一个协议,描述该程序可能执行的效应以及可期望收到的回复;逻辑支持通过 frame 规则和 bind 规则进行局部推理,并建立在 Iris 之上,继承其高阶函数、用户自定义 ghost state 与不变式等特性。作者通过若干案例研究展示其表达力,包括:(1)控制反转的通用表述,将“推送”元素的生产者转为可按需“拉取”元素的生产者;(2)一个简单的协作并发系统,其中多个线程并发执行、可生成新线程并通过 promise 通信。

问题
如何在同时拥有用户自定义效应处理器和堆可变状态等原始效应的语言中,对程序进行模块化的规约与验证。
方法
设计一个内建支持浅层与深层效应处理器的分离逻辑,规约中含描述可执行效应与预期回复的协议,支持 frame 与 bind 局部推理,并基于 Iris 构建。
评估
通过案例研究评估表达力,包括将 push 生产者转化为 pull 生产者的控制反转通用表述,以及支持线程生成与 promise 通信的协作并发系统。
原文摘要(Abstract)

User-defined effects and effect handlers are advertised and advocated as a relatively easy-to-understand and modular approach to delimited control. They offer the ability of suspending and resuming a computation and allow information to be transmitted both ways between the computation, which requests a certain service, and the handler, which provides this service. Yet, a key question remains, to this day, largely unanswered: how does one modularly specify and verify programs in the presence of both user-defined effect handlers and primitive effects, such as heap-allocated mutable state? We answer this question by presenting a Separation Logic with built-in support for effect handlers, both shallow and deep. The specification of a program fragment includes a protocol that describes the effects that the program may perform as well as the replies that it can expect to receive. The logic allows local reasoning via a frame rule and a bind rule. It is based on Iris and inherits all of its advanced features, including support for higher-order functions, user-defined ghost state, and invariants. We illustrate its power via several case studies, including (1) a generic formulation of control inversion, which turns a producer that ``pushes'' elements towards a consumer into a producer from which one can ``pull'' elements on demand, and (2) a simple system for cooperative concurrency, where several threads execute concurrently, can spawn new threads, and communicate via promises.

链接与引用

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

BibTeX
@article{paperbot1157,
  title = {A separation logic for effect handlers},
  author = {Paulo Emílio de Vilhena and François Pottier},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {5},
  number = {POPL},
  year = {2021},
  doi = {10.1145/3434314}
}