paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Cubical agda: a dependently typed programming language with univalence and higher inductive types

Cubical Agda:一种支持 univalence 与高阶归纳类型的依赖类型编程语言
ICFP 3(ICFP)2019匹配度 3/10 · 论文属于依赖类型论与证明助手的基础设施工作,与形式化验证有间接关联,但未涉及静态分析、LLM/Agent、浮点程序分析或贝叶斯程序分析等用户核心交叉方向。引用 71 inbox
Andrea Vezzosi, Anders Mörtberg, Andreas Abel
crossref: 2026-09-10

AI 速览

一句话:通过 cubical 原语扩展 Agda,使其原生支持 univalence 与高阶归纳类型并保持构造性。

依赖类型证明助手可统一编程与证明,但主流实现缺乏函数外延性、命题外延性等强外延性原则;以公理加入会破坏构造性。Cubical type theory 为 Homotopy Type Theory 与 Univalent Foundations 提供计算解释,使 univalence 与高阶归纳类型具有计算意义。本文把 cubical 原语加入依赖类型函数式语言 Agda,使其成为原生支持 univalence 与一般高阶归纳类型模式的证明助手。由此,函数外延性、命题外延性和商类型可直接定义且有计算内容;结合 copatterns,余归纳类型的 bisimilarity 等价于相等性。该扩展不牺牲类型检查与构造性。

问题
主流依赖类型证明助手缺乏函数外延性、命题外延性等强外延性原则;若以公理方式加入,又会破坏系统的构造性与计算内容。
方法
为 Agda 加入 cubical 原语,基于 cubical type theory 的计算解释,原生支持 univalence 和一般高阶归纳类型模式,并利用 copatterns 处理余归纳类型。
评估
以 Agda 的实现与设计结果展示:函数外延性、命题外延性和商类型可直接定义并具有计算内容,余归纳类型的 bisimilarity 与相等性等价,同时保持类型检查与构造性。
原文摘要(Abstract)

Proof assistants based on dependent type theory provide expressive languages for both programming and proving within the same system. However, all of the major implementations lack powerful extensionality principles for reasoning about equality, such as function and propositional extensionality. These principles are typically added axiomatically which disrupts the constructive properties of these systems. Cubical type theory provides a solution by giving computational meaning to Homotopy Type Theory and Univalent Foundations, in particular to the univalence axiom and higher inductive types. This paper describes an extension of the dependently typed functional programming language Agda with cubical primitives, making it into a full-blown proof assistant with native support for univalence and a general schema of higher inductive types. These new primitives make function and propositional extensionality as well as quotient types directly definable with computational content. Additionally, thanks also to copatterns, bisimilarity is equivalent to equality for coinductive types. This extends Agda with support for a wide range of extensionality principles, without sacrificing type checking and constructivity.

链接与引用

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

BibTeX
@article{paperbot587,
  title = {Cubical agda: a dependently typed programming language with univalence and higher inductive types},
  author = {Andrea Vezzosi and Anders Mörtberg and Andreas Abel},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {3},
  number = {ICFP},
  year = {2019},
  doi = {10.1145/3341691}
}