paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Type-Checking CRDT Convergence

CRDT 收敛性的类型检查
PLDI 7(PLDI)2023匹配度 3/10 · 论文属于程序语言与形式化验证领域,用类型系统验证CRDT的代数性质,但用户的核心方向是PL与AI/LLM的交叉(如LLM改进静态分析、分析ML/Agent程序),且不涉及浮点或贝叶斯程序分析,因此匹配度较低。引用 15 inbox
George Zakhour, Pascal Weisenburger, Guido Salvaneschi
crossref: 2026-09-10

AI 速览

一句话:提出 Propel 语言与类型系统,用类型检查自动验证 CRDT 实现所需的交换、结合、幂等等代数性质。

CRDT 依赖 merge 函数满足交换律、结合律与幂等性,但现有测试、模型检验和机器化证明难以直接验证具体实现。本文提出 Propel:一种带类型系统的编程语言,其类型可表达 CRDT 正确性所需的代数性质。Propel 通过和类型指导情况分析、函数类型中的代数性质支持归纳,并借助重写规则推导表达式的相等或不等关系。作者将 Propel 实现为 Scala 嵌入,编写并验证多个 CRDT,与四种先进验证工具对比。结果显示 Propel 能自动推导常见开源 CRDT 实现所需的性质,甚至在对比工具超时的情况下仍能成功。

问题
CRDT 实现需要 merge 函数满足交换、结合和幂等等代数性质,但人工证明、测试或模型检验难以直接验证具体实现。
方法
提出 Propel 语言及类型系统,用和类型做情况分析、用函数类型中的代数性质做归纳,并通过重写规则推导表达式相等/不等,作为 Scala 嵌入实现。
评估
在多个 CRDT 实现上验证 Propel,并与四种先进验证工具比较,展示其能自动推导相关性质且在部分工具超时的情况下成功。
原文摘要(Abstract)

Conflict-Free Replicated Data Types (CRDTs) are a recent approach for keeping replicated data consistent while guaranteeing the absence of conflicts among replicas. For correct operation, CRDTs rely on a merge function that is commutative, associative and idempotent. Ensuring that such algebraic properties are satisfied by implementations, however, is left to the programmer, resulting in a process that is complex and error-prone. While techniques based on testing, automatic verification of a model, and mechanized or handwritten proofs are available, we lack an approach that is able to verify such properties on concrete CRDT implementations. In this paper, we present Propel, a programming language with a type system that captures the algebraic properties required by a correct CRDT implementation. The Propel type system deduces such properties by case analysis and induction: sum types guide the case analysis and algebraic properties in function types enable induction for free. Propel’s key feature is its capacity to reason about algebraic properties (a) in terms of rewrite rules and (b) to derive the equality or inequality of expressions from the properties. We provide an implementation of Propel as a Scala embedding, we implement several CRDTs, verify them with Propel and compare the verification process with four state-of-the-art verification tools. Our evaluation shows that Propel is able to automatically deduce the properties that are relevant for common CRDT implementations found in open-source libraries even in cases in which competitors timeout.

链接与引用

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

BibTeX
@article{paperbot1988,
  title = {Type-Checking CRDT Convergence},
  author = {George Zakhour and Pascal Weisenburger and Guido Salvaneschi},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {7},
  number = {PLDI},
  year = {2023},
  doi = {10.1145/3591276}
}