paperbot · PL 论文追踪

全部论文 待读 收藏

P2 A Lazy, Concurrent Convertibility Checker

一个惰性并发的可转换性检查器
POPL 10(POPL)2026匹配度 2/10 · 论文属于类型系统/证明助手中的可转换性检查,研究懒惰与并发算法,未涉及 LLM/Agent、ML/Agentic 程序的静态分析、浮点程序分析或贝叶斯程序分析;仅与形式化验证有边缘关联,不匹配当前核心研究方向。引用 0 inbox
Nathanaëlle Courant, Xavier Leroy
crossref: 2026-09-10

AI 速览

一句话:提出一种依赖惰性与并发的可转换性检查算法,总能找到存在的简单解,避免启发式带来的冗余计算。

可转换性检查——判定两个 lambda 项是否在归约意义下相等——是证明助手与依赖类型语言的核心组件。实际实现常用启发式快速判定两词项是否可转换,而不将其归约到正规形式,但这类启发式可能适得其反,触发大量无用的计算。本文提出一种全新的可转换性检查算法,其关键在于惰性与并发:惰性用于共享计算,避免重复归约;并发用于并行或公平交错地探索多个可转换性子问题。与基于启发式的方法不同,只要可转换性问题存在简单解,该算法总能找到它。论文以进程演算风格描述算法,讨论其复杂度,并报告了部分正确性的机器化证明与轻量级实验评估。

问题
证明助手与依赖类型语言的实现依赖启发式来快速判定可转换性,但这些启发式可能引发大量不必要的计算,且不保证找到简单的转换证明。
方法
提出以惰性共享计算、以并发并行或公平交错探索多个子问题的可转换性检查算法,并用进程演算风格予以形式化描述。
评估
对算法进行了复杂度分析,给出部分正确性的机器化证明,并开展了轻量级的实验评估。
原文摘要(Abstract)

Convertibility checking — determining whether two lambda-terms are equal up to reductions — is a crucial component of proof assistants and dependently-typed languages. Practical implementations often use heuristics to quickly conclude that two terms are convertible, or are not convertible, without reducing them to normal form. However, these heuristics can backfire, triggering huge amounts of unnecessary computation. This paper presents a novel convertibility-checking algorithm that relies crucially on laziness and concurrency . Laziness is used to share computations, while concurrency is used to explore multiple convertibility subproblems in parallel or via fair interleaving. Unlike heuristics-based approaches, our algorithm always finds an easy solution to the convertibility problem, if one exists. The paper describes the algorithm in process calculus style, discusses its complexity, and reports on its mechanized proof of partial correctness and its lightweight experimental evaluation.

链接与引用

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

BibTeX
@article{CourantL26,
  title = {A Lazy, Concurrent Convertibility Checker},
  author = {Nathanaëlle Courant and Xavier Leroy},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {10},
  number = {POPL},
  year = {2026},
  doi = {10.1145/3776695}
}