与Coq相比,Isabelle证明助理的优缺点是什么?


Answers:


67

我对Coq最为熟悉,并且对Isabelle / HOL没有太多经验,但是我可能会有所帮助。也许其他对Isabelle / HOL有更多经验的人可以帮助改善这一点。

两种系统之间有两点分歧:基础理论互动方式。我将简要概述每种情况下的主要区别。

理论

Coq和Isabelle / HOL均基于功能强大且表达力强的高阶逻辑。但是,这些逻辑在一些功能上有所不同:

依赖类型

Coq的逻辑是从属类型理论,称为归纳结构演算(简称CIC)。“从属类型”在这里意味着Coq中的类型可以引用普通值。例如,可以编写一个mult类型为的矩阵乘法函数

mult : forall (n m p : nat), matrix n m -> matrix m p -> matrix n p

此函数的类型表示它以两个矩阵作为输入,一个维度为维n x m,另一个维度为维m x p,并返回一个维度矩阵n x p。另一方面,Isabelle / HOL的理论不具有依赖类型。因此,不能编写mult与上述函数相同类型的函数。取而代之的是,必须编写一个适用于任何类型矩阵的函数,并在接收到正确类型的参数时证明该函数的某些后验性质。换句话说,在处理Isabelle / HOL时,需要将Coq类型中体现的某些属性断言为单独的定理。

尽管从属类型在某些方面很有趣,但尚不清楚它们在总体上有多有用。我的印象是,有些人觉得它们的使用非常复杂,并且在类型级别上表达某些属性而不是将它们作为单独的定理所带来的好处不值得这种额外的复杂性。就个人而言,在有明确的理由时,我喜欢在少数情况下使用依赖类型。

基本推理原理

缺省情况下,Coq的理论缺少许多数学实践中常见的推理原理,例如被排除的中间律(即非构造性推理的能力),可扩展性(例如,能够说产生相同结果的函数)相等),以及选择的公理。另一方面,在Isabelle / HOL中,此类原则是内置的。

从理论上讲,这不是什么大问题,因为Coq的逻辑旨在让人们安全地将这些推理原理添加为额外的公理。不过,我的印象是,在Isabelle / HOL上进行这种推理比较容易,因为逻辑是从头开始构建以支持它们的。

(您可能想知道为什么将这些基本原理排除在Coq逻辑之外是什么原因。动机是哲学上的:在Coq的核心逻辑中,证明可以看作是可执行程序,从而使逻辑具有建设性的味道。拒绝排除的原因是中间,例如,是一个析取的证明A \/ B对应于一个程序,返回一个指示其中一个AB为真;因此,被排除的中间将对应于一个程序,决定每一个数学问题,其中不能存在这个问题进一步讨论这个问题。)

互动方式

Coq和Isabelle / HOL都是交互式定理证明。它们是用于编写定义和证明的语言。计算机会检查这些证明,以确保它们没有错误。在这两种系统中,都通过给出解释如何证明事物的命令来写下证明。但是,在每个系统上发生这种情况的方式各不相同。

通常,Isabelle / HOL对“按钮式”证明自动化具有更成熟的支持。例如,它带有著名的sledgehammer策略,该策略调用多个外部自动定理证明者和求解器以尝试证明一个定理。Coq还提供了许多强大的证明自动化程序,例如omegacongruence,但是它们并不普遍适用,并且在Isabelle / HOL中可以用单个命令解决的许多定理需要在Coq中提供更明确的证明。

当然,这种便利是有代价的。有人告诉我,在Isabelle / HOL中很难控制自己的举证,因为该系统试图自己做很多事情。证明简单定理时,这不是问题,但是当证明自动化的功能不足时,这便成为问题,您需要告诉定理证明者如何进行更详细的说明。

在支持用户定义的自动证明程序时,情况有所不同。Coq附带了一种用于编写证明的战术语言,称为Ltac,这是一种独立的编程语言。即使Ltac有一些设计问题,它也允许用户以轻量级的方式对相当复杂的证明自动化程序进行编码。对于繁重的任务,Coq还允许用户使用Coq的实现语言OCaml编写插件。相反,在Isabelle / HOL中,没有像Ltac这样的高级自动化语言,并且用户可以编程自定义证明自动化过程的唯一方法是使用插件。


5
大多数情况对我来说都是正确的,但是我有两个选择:首先,伊莎贝尔确实有矩阵,并且矩阵乘法的类型是('a::semiring_1)^'n^'m ⇒ 'a^'p^'n ⇒ 'a^'p^'m。你可以,例如,矩阵乘法类型real^2^3real^4^2获得类型之一real^4^3。之所以可行n,是因为对于任何正整数,都有一个内置类型,该类型由从0到n-1的数字组成。
曼努埃尔·埃伯

10
至于战术语言:伊莎贝尔现在拥有Eisbach(ssrg.nicta.com.au/projects/TS/tactics.pml)
曼努埃尔·

3
而且,我认为,使用结构化的Isar证明可以很自然地完成仅靠自动化进行分解的证明。
曼努埃尔·埃伯

3
@Soleil由于有许多等效的排除中间公式,您可以选择其中一个作为公理,而哪些则作为定理推导,这在很大程度上取决于品味。正如您所指出的那样,某些系统使用无矛盾原理作为公理,而其他系统(包括Coq标准库的经典片段和Gentzen的NK微积分)则使用排除的中间值。尽管如此,我的目标不是要争论什么是公理,而是要指出这些基本推理原理在Coq和Isabelle中是不同的。我将编辑答案。
亚瑟·阿兹维多·德阿莫林

3
@David在Coq中有许多经过验证的软件示例。著名的软件包括通过compcert验证的c编译器,用于llvm的vellvm后端,certikos操作系统,以及使用来自普林斯顿的经过验证的软件工具链的软件。
亚瑟·阿兹维多·德阿莫林

18

我将举例说明Isabelle / HOL的“按钮式”功效的一个方面是它对Cantor的经典“对角化”论点的自动化(回想一下,这表明从自然到其功率集没有任何排斥,或更一般地任何设置为它的功率集)。

theorem Cantor: "∄f :: 'a ⇒ 'a set. ∀A. ∃x. A = f x"
proof
  assume "∃f :: 'a ⇒ 'a set. ∀A. ∃x. A = f x"
  then obtain f :: "'a ⇒ 'a set" where *: "∀A. ∃x. A = f x" ..
  let ?D = "{x. x ∉ f x}"
  from * obtain a where "?D = f a" by blast
  moreover have "a ∈ ?D ⟷ a ∉ f a" by blast
  ultimately show False by blast
qed

我刚才向您介绍的是将Cantor的经典论点翻译成Isabelle / HOL。毫无疑问,巧妙!Isabelle / HOL甚至可以从此证明中自动消除洞察力,但是:

theorem "∄f :: 'a ⇒ 'a set. ∀A. ∃x. f x = A"
  by best

theorem "∄f :: 'a ⇒ 'a set. ∀A. ∃x. f x = A"
  by force

证明系统能够自动证明Cantor的陈述。对于研究人员来说,一方面这是有帮助的,但从某种意义上说,这是一把双刃剑。我发现,对角化参数如此复杂的真实语句可以被Isabelle / HOL内部证明是有帮助的,因为我的定理由此变得更加复杂。另一方面,由于计算机的自动化进程推动了我的研究工作,我就可以越来越少地解释定理为什么成立或为何成立。只有计算机知道原因,如果我们可以提出要求!


4
关于“只有计算机知道原因”:没有一种方法可以窥探到它的结果吗?
Max Heiber

您要求伊莎贝尔(Isabelle)向您显示生成的证明条款,但是,大小和细节会让您不知所措。人类可理解的证明(如上述答案中的Cantor定理的Isar证明)从诸如“什么是集合”和“什么是'f'”的意思等细节中抽象出来。
索伦Debois

10

由于问题中的“ Isabelle / HOL”是精确的,因此我将讨论Isabelle中使用的HOL逻辑,我认为这是与Coq进行比较的最佳方法。我不是类型系统和逻辑方面的专家,但是我认为我所说的是正确的,至少是正确的。这当然也是一个问题;-),我的回答可能是主观的。

最深刻的区别在于类型系统和逻辑。

我想说,对于了解ML系列功能语言的人(甚至对于了解SML的人),它的力量会更加自然,并且它会采用务实的方法来解决问题,例如使用经典逻辑一个基础。它的类型系统接近Hindley Milner的类型系统,并且默认情况下终止(如果用户未对其进行修改)。

另一方面,Coq更为严格,并使用直觉逻辑。它具有一个特殊的类型系统,该系统具有多个顺序,并允许类型依赖性,这种依赖性可能很难处理,并且在某些情况下可能不会终止。它还允许人们从证明中提取程序(可能效率较低),而这在Isabelle中是不可能直接实现的。


您能否阐明Coq的类型系统是不确定的,这意味着什么?
亚瑟·阿兹维多·德阿莫林

哦,对不起,太晚了……我的意思是不终止,我会改正的。
Mathieu

10
哦,我懂了。我认为这有点微妙,因为类型检查Coq程序实际上是可以确定的。导致类型检查器循环的是诸如类型类推断之类的功能,但严格来说,它位于类型系统之外。此外,您始终可以通过手动提供类型类实例来强制终止类型检查。
亚瑟·阿兹维多·德阿莫林
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.