Coq和Agda之间的差异

Cri*_*cia 16 coq agda

这些程序的设计目标是什么?每个程序提供的是另一个程序?此外,两个系统是否一致,而且,它们是否基于一些基础数学理论?

我关心的两件事:

  1. 易于安装
  2. 简单易学

我在搜索,我读到的内容似乎非常两极分化,我想知道他们与最客观(人性)可能的观点的区别.

Pti*_*val 17

Coq的设计考虑了定理,而Agda的设计考虑了依赖类型的编程.

它们在理论方面有些相同(即使它们有差异,Coq在公理中稍微保守一些,并且在默认情况下更接近于CIC的数学基础),但在那一点上我几乎同样相信它们.例如,他们发现它们的共同诱导处理不一致,但对常规诱导部分的错误非常强大.

根据我的经验,它们都很容易安装在Linux系统上.当Cabal工作时,Agda可能会稍微容易一点,但如果没有,则会更加可怕.Coq可以捆绑在一起,或者你可以从源代码构建它,根据我的经验,它是可以的,但有时它会变得很痛苦,因为你必须关心OCaml和camlp5的版本.

在学习方面,我认为Coq可能更容易学习,因为它有一些相当冗长和节奏缓慢的书籍(软件基础,​​Coq'Art等)和一些高级书籍(CPDT).对于Agda来说,我的体验有点苛刻,基本上是Norell的PDF和wiki ......另一方面,Agda需要较少的学习,因为你大多需要依赖类型,语法和标准库.在Coq你还必须学习其他很多的战术!

我的观点是: - 如果你打算用大证据进行重大开发,Coq可能是你的安全选择 - 如果你只是对一些依赖类型的编程感兴趣,Agda可能是更可爱的选择

学习其中任何一方都会对学习另一方有很大帮助,那么为什么不尝试两者呢?:)

  • 另一方面,Agda的标准库可以通过依赖类型读取到FP中,而它们是Coq标准库的大部分,它们已经过时了,证明样式已被弃用. (7认同)
  • 现在有一个到 Agda 的端口;-) *Agda 中的编程语言基础* https://plfa.github.io/ (6认同)