paperbot · PL 论文追踪

全部论文 待读 收藏

P2 A comprehensible guide to a new unifier for CIC including universe polymorphism and overloading

面向 CIC 的新合一器可理解指南:包含宇宙多态与重载
JFP vol.272017匹配度 3/10 · 论文研究 CIC/Coq 的合一算法与类型系统实现,属于形式化验证和证明助手基础设施,与用户关注的“LLM/Agent 改进形式化验证”仅有间接背景关联;论文本身不涉及 LLM、Agent、静态分析或浮点/贝叶斯程序分析。引用 12 inbox
BETA ZILIANI, MATTHIEU SOZEAU
dblp: 2026-09-10crossref: 2026-09-10

AI 速览

一句话:完整描述并实现支持宇宙多态与重载(规范结构)的 CIC 合一算法,并在大型库上验证启发式足够。

论文关注带依赖类型的证明助手与编程语言中的合一问题。CIC(Coq 的基础逻辑)需要处理转换下的高阶合一,该问题不可判定,现有合一器依赖多种启发式;当启发式堆叠过多时,算法结果与复杂度会变得难以预测。作者从基本演算出发,逐步扩展到 Coq 实际实现的完整 CIC,给出一个支持宇宙多态、规范结构(Coq 合一中的重载机制)和少量有用启发式的新合一算法的完整描述。作者还实现了该算法,并在多个库上进行测试,结果表明所选启发式足以支撑大型开发。

问题
CIC 中转换下的高阶合一不可判定,证明助手需依赖多种启发式;启发式堆叠会使算法结果与复杂度难以预测。
方法
从基本演算逐步构造完整 CIC 合一算法,涵盖宇宙多态、规范结构(重载)及少量启发式。
评估
实现该算法并在多个 Coq 库上测试,以验证所选启发式能支持大型开发。
原文摘要(Abstract)

Abstract Unification is a core component of every proof assistant or programming language featuring dependent types. In many cases, it must deal with higher order problems up to conversion. Since unification in such conditions is undecidable, unification algorithms may include several heuristics to solve common problems. However, when the stack of heuristics grows large, the result and complexity of the algorithm can become unpredictable. Our contributions are twofold: (1) We present a full description of a new unification algorithm for the Calculus of Inductive Constructions (the base logic of C OQ ), building it up from a basic calculus to the full Calculus of Inductive Constructions as it is implemented in C OQ , including universe polymorphism, canonical structures (the overloading mechanism baked into C OQ 's unification), and a small set of useful heuristics. (2) We implemented our algorithm, and tested it on several libraries, providing evidence that the selected set of heuristics suffices for large developments.

链接与引用

DOI 原文 · DBLP

BibTeX
@article{ZilianiS17,
  title = {A comprehensible guide to a new unifier for CIC including universe polymorphism and overloading},
  author = {BETA ZILIANI and MATTHIEU SOZEAU},
  journal = {Journal of Functional Programming},
  volume = {27},
  year = {2017},
  doi = {10.1017/s0956796817000028}
}