paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Model Checking Distributed Protocols in Must

在 Must 中模型检测分布式协议
OOPSLA 8(OOPSLA2)2024匹配度 3/10 · 该论文属于程序验证/形式化验证,并强调工业落地与工程实现,与用户对形式化验证的部分兴趣相符;但它聚焦分布式协议模型检查与动态偏序归约,不涉及 LLM/Agent、静态分析在机器学习系统中的应用、浮点程序分析或贝叶斯程序分析,因此与核心研究方向匹配有限。引用 9 inbox
Constantin Enea, Dimitra Giannakopoulou, Michalis Kokologiannakis, Rupak Majumdar
dblp: 2026-09-10crossref: 2026-09-10

AI 速览

一句话:提出 Must 框架,用最优动态偏序归约在主流语言上建模并验证分布式协议。

分布式系统的建模与自动验证十分困难:现有模型检测器既难以支持多种通信模型,也难以扩展到生产中实际部署的系统。Must 在 Rust 等主流语言之上提供并发 API,支持多种通信模型,并采用一种新的最优动态偏序归约算法,对 API 支持的所有通信模型都保持完备性与最优性。作者用高层系统惯用法(超时、领导者选举、版本化)作为核心 API 的抽象来检验 API 的易用性,并对生产中使用的系统(复制日志、分布式事务管理协议)进行验证,展示了超越以往模型检测器的可扩展性。

问题
如何对分布式系统进行建模并自动验证,同时支持多种通信模型,并扩展到生产中实际使用的系统规模。
方法
Must 在 Rust 等主流语言上提供并发 API,并基于一种对所有支持的通信模型都保持完备性与最优性的新型动态偏序归约算法进行验证。
评估
在工业背景下用 Must 建模并验证高层系统惯用法(超时、领导者选举、版本化)以及生产中的复制日志、分布式事务管理协议等系统,展示其易用性与可扩展性。
原文摘要(Abstract)

We describe the design and implementation of Must, a framework for modeling and automatically verifying distributed systems. Must provides a concurrency API that supports multiple communication models, on top of a mainstream programming language, such as Rust. Given a program using this API, Must verifies it by means of a novel, optimal dynamic partial order reduction algorithm that maintains completeness and optimality for all communication models supported by the API. We use Must to design and verify models of distributed systems in an industrial context. We demonstrate the usability of Must’s API by modeling high-level system idioms (e.g., timeouts, leader election, versioning) as abstractions over the core API, and demonstrate Must’s scalability by verifying systems employed in production (e.g., replicated logs, distributed transaction management protocols), the verification of which lies beyond the capacity of previous model checkers.

链接与引用

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

BibTeX
@article{EneaGKM24,
  title = {Model Checking Distributed Protocols in Must},
  author = {Constantin Enea and Dimitra Giannakopoulou and Michalis Kokologiannakis and Rupak Majumdar},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {8},
  number = {OOPSLA2},
  year = {2024},
  doi = {10.1145/3689778}
}