paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Mixed Choice in Asynchronous Multiparty Session Types

异步多参与者会话类型中的混合选择
OOPSLA 10(OOPSLA1)2026匹配度 2/10 · 论文属于多参与者会话类型与并发形式语义,虽兼具理论证明和 Erlang/RabbitMQ 工程案例,但与用户关注的 LLM/Agent 程序静态分析、LLM 辅助形式化验证、浮点程序分析或贝叶斯程序分析均无直接交集。引用 0 inbox
Laura Bocchi, Raymond Hu, Adriana Laura Voinea, Simon Thompson
crossref: 2026-09-10

AI 速览

一句话:提出支持异步混合选择的多参与者会话类型框架,允许协议状态瞬时不一致但保证最终一致,并实现工具链与 Erlang 案例。

本文针对异步多参与者会话类型(MST)中混合选择(参与者既能发送又能接收的选择)难以处理的问题,提出一个支持异步混合选择(MC)的 MST 框架。作者设计了一个 MC 核心构造,允许分布式参与者之间的协议状态出现瞬时不一致,但保证所有参与者最终总能到达相互一致的状态。为验证系统正确性,作者建立了进展性(progress)性质,并证明了全局类型与其分布式局部类型投影之间的操作对应关系。基于该理论,作者实现了一个用于规约和验证含 MC 的异步 MST 协议的工具链,并可在 Erlang/OTP 中编写符合规范的 gen_statem 进程。最后,作者使用该工具链重新实现了 RabbitMQ broker 的 Erlang amqp_client 的一部分,以检验框架的实用性。

问题
在异步多参与者会话类型中,混合选择(同一参与者既可发送也可接收的选择)会导致分布式参与者的协议状态出现瞬时不一致,难以在保证类型安全的同时刻画其行为。
方法
提出异步混合选择(MC)的核心构造,允许参与者在执行过程中暂时处于不一致的协议状态,但保证最终可达相互一致状态;证明进展性与全局类型到分布式局部类型投影之间的操作对应。
评估
实现了一个用于规约与验证含 MC 的异步 MST 协议的工具链,并在 Erlang/OTP 中生成符合规范的 gen_statem 进程;通过用该工具链重新实现 RabbitMQ broker 的 amqp_client 的一部分进行案例验证。
原文摘要(Abstract)

We present a multiparty session type (MST) framework with asynchronous mixed choice (MC). We propose a core construct for MC that allows transient inconsistencies in protocol state between distributed participants, but ensures all participants can always eventually reach a mutually consistent state. We prove the correctness of our system by establishing a progress property and an operational correspondence between global types and distributed local type projections. Based on our theory, we implement a practical toolchain for specifying and validating asynchronous MST protocols featuring MC, and programming compliant gen_statem processes in Erlang/OTP. We test our framework by using our toolchain to specify and reimplement part of the amqp_client of the RabbitMQ broker for Erlang.

链接与引用

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

BibTeX
@article{paperbot3793,
  title = {Mixed Choice in Asynchronous Multiparty Session Types},
  author = {Laura Bocchi and Raymond Hu and Adriana Laura Voinea and Simon Thompson},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {10},
  number = {OOPSLA1},
  year = {2026},
  doi = {10.1145/3798256}
}