Coq中的简单恒等式

Coq中的简单恒等式,coq,theorem-proving,Coq,Theorem Proving,我可能遗漏了一些基本的东西 我可以证明以下“身份”: 用介绍。简介。假设。 然而,我似乎无法证明: Theorem identity : forall a : Prop, a. 当然我可以做intro,但这就给我留下了: a : Prop _________(1/1) a 我不知道该怎么办。 第一种形式似乎是多余的,说明对于所有a,a都意味着a forall a : Prop, a -> a. 读作“给定某个命题的证明a我们可以构造同一命题的证明”。这是真的,因为我们可以只返回原始证

我可能遗漏了一些基本的东西

我可以证明以下“身份”:

介绍。简介。假设。

然而,我似乎无法证明:

Theorem identity : forall a : Prop, a.
当然我可以做
intro
,但这就给我留下了:

a : Prop
_________(1/1)
a
我不知道该怎么办。
第一种形式似乎是多余的,说明对于所有
a
a
都意味着
a

forall a : Prop, a -> a.
读作“给定某个命题的证明
a
我们可以构造同一命题的证明”。这是真的,因为我们可以只返回原始证据

让我们用Coq检查一下:

Print identity_simple.
(* 
output:

identity_simple = fun (a : Prop) (H : a) => H
     : forall a : Prop, a -> a
*)
证明术语
fun(a:Prop)(H:a)=>H
准确地表达了所描述的行为

第一种形式似乎是多余的,说明对于所有
a
a
都意味着
a

forall a : Prop, a -> a.
从某种意义上说,你是对的——这是显而易见的。你可以把它看作是一个测试——如果你不能证明它,那么逻辑一定有问题


读作“我们可以构造任何命题的证明”。这是不正确的,因为例如,您不能构造
False
(在空上下文中)的证明。这将是一场灾难——我们不想使用一切都可以证明的逻辑

读作“给定某个命题的证明
a
我们可以构造同一命题的证明”。这是真的,因为我们可以只返回原始证据

让我们用Coq检查一下:

Print identity_simple.
(* 
output:

identity_simple = fun (a : Prop) (H : a) => H
     : forall a : Prop, a -> a
*)
证明术语
fun(a:Prop)(H:a)=>H
准确地表达了所描述的行为

第一种形式似乎是多余的,说明对于所有
a
a
都意味着
a

forall a : Prop, a -> a.
从某种意义上说,你是对的——这是显而易见的。你可以把它看作是一个测试——如果你不能证明它,那么逻辑一定有问题



读作“我们可以构造任何命题的证明”。这是不正确的,因为例如,您不能构造
False
(在空上下文中)的证明。这将是一场灾难——我们不想使用一种所有东西都可以证明的逻辑。

如果量化变量在结果中没有出现,这与从蕴涵到普遍量化的转变有什么关系?例如,如果我想做一些关于
定理恒等式:forall x:Prop,forall y:x,y.
Coq不喜欢哪个。你可以把它翻译成
x
是一个命题,
y
是它的证明项,你想构造
y
类型的东西。但它不会进行类型检查,因为
y
是一个术语而不是类型。这种解释有意义吗?在这种情况下,有没有一种方法可以将普遍的量化转化为隐含和倒退?或者这是最好的尝试,即使我们假设所有y:x的x/Prop同余和替换,我们也会得到所有y:Prop的
。。。我有点困惑。(1)一个方向很简单:在Coq中,
->
只是所有
的符号:
符号“a->B”:=(对于所有(:a),B):键入范围。
(在中定义)。(2) 反之亦然(如果
B
依赖于
x
我们不能这样做)。(3) 你能非正式地把问题说出来吗?也许我们可以想出一些办法……这实际上是问题本身——我希望在隐含形式
a->a
之类的东西和
forall
形式:)中都有标识。所以我猜对于a:Prop,a->a
应该是对于a:Prop,(对于所有(x:a),a)
。。。哦,现在一切都有意义了。。。我想我需要一杯咖啡,我顿悟了,非常感谢,你刚刚帮我省去了很多麻烦:)。如果量化变量在结果中没有出现,这与从蕴涵到普遍量化的转变有什么关系?例如,如果我想做一些关于
定理恒等式:forall x:Prop,forall y:x,y.
Coq不喜欢哪个。你可以把它翻译成
x
是一个命题,
y
是它的证明项,你想构造
y
类型的东西。但它不会进行类型检查,因为
y
是一个术语而不是类型。这种解释有意义吗?在这种情况下,有没有一种方法可以将普遍的量化转化为隐含和倒退?或者这是最好的尝试,即使我们假设所有y:x的x/Prop同余和替换,我们也会得到所有y:Prop的
。。。我有点困惑。(1)一个方向很简单:在Coq中,
->
只是所有
的符号:
符号“a->B”:=(对于所有(:a),B):键入范围。
(在中定义)。(2) 反之亦然(如果
B
依赖于
x
我们不能这样做)。(3) 你能非正式地把问题说出来吗?也许我们可以想出一些办法……这实际上是问题本身——我希望在隐含形式
a->a
之类的东西和
forall
形式:)中都有标识。所以我猜对于a:Prop,a->a
应该是对于a:Prop,(对于所有(x:a),a)
。。。哦,现在一切都有意义了。。。我想我需要一杯咖啡,我顿悟了,非常感谢,你刚刚帮我省去了很多头痛:)。