Coq 是一个交互式的定理证明辅助工具。它允许用户输入包含数学断言的表达式、机械化地对这些断言执行检查、帮助构造形式化的证明、并从其形式化描述的构造性证明中提取出可验证的(certified)程序。Coq 的理论基础是归纳构造演算(calculus of inductive constructions)、一种构造演算(calculus of constructions)的衍生理论。Coq 并非一个自动化定理机器证明语言;然而,它提供了自动化定理证明的策略(tactics)和不同的决策过程。

Coq
编程范型函数式编程
发行时间1989年5月1日,​35年前​(1989-05-01 (版本4.10)
当前版本
  • 8.20.0(2024年9月3日;稳定版本)[1]
编辑维基数据链接
型态系统静态类型强类型
实作语言OCaml
操作系统跨平台
许可证LGPL 2.1
文件扩展名.v
网站coq.inria.fr
启发语言
ML(编程)
LCF(证明方法)
Automath(混合证明/编程)
System F直觉类型论
影响语言
AgdaIdris, Matita, Albatross
一个交互式定理证明的CoqIDE会话,左侧为证明的脚本,右侧显示当前证明的状态。

Coq 同时还是一个依赖类型函数式编程语言[4]。它由法国PPS实验室的PI.R2团队研究开发[5],该团队由INRIA巴黎综合理工学院巴黎第十一大学巴黎第七大学法国国家科学研究中心组成。此前里昂高等师范学校亦曾参与开发。Coq 项目当前由 Gérard Huet英语Gérard HuetChristine Paulin-Mohring英语Christine Paulin-Mohring 和 Hugo Herbelin领导。Coq 使用 OCaml 以及少部分 C 实现。

单词 coq法语中意为“公鸡”,此命名体现了法国在研究活动中使用动物名称命名工具的传统。[6] 最初,它被简单地称作 Coc,意即构造演算(calculus of constructions)的缩写,同时也暗含了 Thierry Coquand(与 Gérard Huet 共同提出了前述的构造演算)的姓氏。

Coq 自身提供了一套规范语言 Gallina[7] (gallina 在西班牙语中意为“母鸡”)。使用 Gallina 书写的程序具有规范化性质——它们总是会终止。此性质使之避开了停机问题 [8]。同时,这也使得 Coq 语言本身并非图灵完全

应用

引用

  1. ^ Release Coq 8.20.0. 2024年9月3日. 
  2. ^ Coq 8.12.2 is out. 2020-12-11 [2021-08-29]. (原始内容存档于2022-03-23). 
  3. ^ Coq 8.13+beta1 is out. 2020-12-07 [2021-08-29]. (原始内容存档于2022-04-07). 
  4. ^ A short introduction to Coq页面存档备份,存于互联网档案馆).
  5. ^ PI.R2. [2014-01-23]. (原始内容存档于2013-12-17). 
  6. ^ Coq Version 8.0 for the Clueless (174 Hints)页面存档备份,存于互联网档案馆). Flint.cs.yale.edu. Retrieved on 2013-11-07.
  7. ^ Adam Chlipala. "Certified Programming with Dependent Types": "Library Universes"页面存档备份,存于互联网档案馆).
  8. ^ Adam Chlipala. "Certified Programming with Dependent Types": "Library GeneralRec"页面存档备份,存于互联网档案馆). "Library InductiveTypes"页面存档备份,存于互联网档案馆).

外部链接