Coq和Agda之间的差异

Coq和Agda之间的差异,coq,agda,Coq,Agda,这些项目的目的是什么?它们相互提供了什么?此外,这两个系统是一致的吗?而且,它们是基于一些基本的数学理论吗 我关心两件事: 易于安装 易学 我进行了搜索,我读到的内容似乎非常两极化,我想从最客观(人性化)的角度了解它们的差异。Coq的设计考虑到了定理证明,而Agda的设计考虑到了依赖类型的编程 它们在理论上有点相同(即使它们有差异,COQ在其公理中稍微保守一些,并且更接近默认的CIC的数学基础),但在这点上我几乎同样信任它们。例如,他们都被发现在处理共归纳时不一致,但对常规归纳部分中的错误非常鲁

这些项目的目的是什么?它们相互提供了什么?此外,这两个系统是一致的吗?而且,它们是基于一些基本的数学理论吗

我关心两件事:

  • 易于安装
  • 易学

  • 我进行了搜索,我读到的内容似乎非常两极化,我想从最客观(人性化)的角度了解它们的差异。

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

    它们在理论上有点相同(即使它们有差异,COQ在其公理中稍微保守一些,并且更接近默认的CIC的数学基础),但在这点上我几乎同样信任它们。例如,他们都被发现在处理共归纳时不一致,但对常规归纳部分中的错误非常鲁棒

    根据我的经验,它们都很容易安装在Linux系统上。当阴谋集团运作时,阿格达可能会稍微容易一些,但当它不运作时,阿格达会更可怕。Coq可以捆绑提供,也可以从源代码构建,根据我的经验,这是可以的,但有时会很痛苦,因为您必须同时关注OCaml和camlp5的版本

    就学习而言,我认为Coq可能更容易学习,因为它有一些现有的相当长且节奏缓慢的书籍(软件基础、Coq'Art等)和一些高级书籍(CPDT)。对于Agda来说,我的经历有点苛刻,基本上是Norell的PDF和wiki。。。 另一方面,Agda需要较少的学习,因为您主要需要学习依赖类型、语法和标准库。而在Coq,你还必须学习战术,这是一个完全不同的东西

    我的观点是: -如果你打算用大的样件进行大的开发,Coq可能是你安全的选择 -如果您只是对某些依赖类型的编程感兴趣,那么Agda可能是更受欢迎的选择


    不管怎样,学习其中一种方法对学习另一种方法会有很大帮助,所以为什么不同时尝试两种方法呢?:)

    你看过吗?刚刚看过,但有很多事情我不明白,因为这假设你至少知道其中一件。如果有一些事情你不明白,也许它们很适合在这里询问?另一方面,Agda的标准库可以通过依赖类型在FP中读取到lvl up,而它们是Coq标准库的巨大组成部分,因为它们太旧了,所以校对样式不受欢迎。现在Agda有一个端口;-)Agda中的编程语言基础