了解Show Proof的COQ证明。

时间:2018-08-23 01:22:25

标签: coq proof

我是COQ的新手,我正试图证明反例定理。

<Image source={{uri: "https://images.pexels.com/photos/614810/pexels-photo-614810.jpeg?auto=compress&cs=tinysrgb&h=650&w=940"}} style={{height:100,width:100}} />

当我们学习逻辑时,我们学习了RAA技术,但在COQ中并没有增加新的假设,现在我们陷入了困境。

所以我们尝试:

Variable A B:Prop.

Hypothesis R1: ~A->B.
Hypothesis R2: ~B.

Theorem ej: A.

具有以下输出,但我们不知道这是什么意思。

Proof.
tauto.
Show Proof.

有人可以帮助我们了解COQ Show Proof的输出吗?

1 个答案:

答案 0 :(得分:5)

Coq将证明作为功能编程语言的程序,紧跟Curry-Howard correspondence。这些程序是通过将Coq逻辑的原语与用户证明的公理和定理组合而成的。您看到的输出是一个“程序”,它在两个参数(命题NNPP和匿名函数A)上调用公理fun H : ~ A => ...。公理NNPP是通常在矛盾证明中使用的双重否定消除原理。如果您输入Check NNPP.,Coq会告诉您其类型为forall P : Prop, ~ ~ P -> P,这意味着,给定P的任何命题H和任何证明~ ~ P,{ {1}}是NNPP P H的证明。上面构建的Coq P的功能性术语正是使用您声明的假设的fun H : ~ A => ...的Coq证明。

我不知道您有多少有关Coq和函数式编程的经验,但是看一下Software Foundations书系列可能会很有用,该书对Coq进行了全面介绍。特别是,Proof Objects这一章介绍了Coq证明的表示方式。