Types 你如何解读coq量词`对于所有P:Set->;道具`?

Types 你如何解读coq量词`对于所有P:Set->;道具`?,types,coq,proof,theorem-proving,Types,Coq,Proof,Theorem Proving,我是Coq的新手,在这里学习Mike Nahas的教程:。具体来说,我很难理解以下陈述: Theorem forall_exists : (forall P : Set -> Prop, (forall x, ~(P x)) -> ~(exists x, P x)). 这是我到目前为止的解释,欢迎指正 语句Set->Prop是一个命题,它可以扩展到for all s:Set,Prop,我理解为“对于Set的每个证明(读取实例),我们也有一个Prop的证明(实例)” 因此,fora

我是Coq的新手,在这里学习Mike Nahas的教程:。具体来说,我很难理解以下陈述:

Theorem forall_exists : (forall P : Set -> Prop,  (forall x, ~(P x)) -> ~(exists x, P x)).
这是我到目前为止的解释,欢迎指正

语句
Set->Prop
是一个命题,它可以扩展到
for all s:Set,Prop
,我理解为“对于
Set
的每个证明(读取实例),我们也有一个
Prop
的证明(实例)”

因此,
forall p:Set->Prop
可以大致理解为“对于集合产生命题的每一个证明”

然后对于
(对于所有x,~(px))
,我的猜测是
x
被Coq推断为
Set
类型,它被解读为“每个集合都会产生一个不可证明/错误的命题”

对于
~(exists x,px)
,我读到,因为不存在表示p下真命题存在的集合

这些似乎在逻辑上是等价的。我只是在努力学习语言。
P
可以解释为从集合空间映射到命题空间的函数吗?我用了“引起”和“暗示存在”这两个短语;这是正确的吗?有没有更正确的说法

谢谢你的帮助

编辑:对于任何有类似问题的人来说,我的困惑主要是对库里-霍华德同构的无知


我的解释(可能仍然有点不确定)是,现在的定理是“对于
p
类型
Set
元素的每个谓词(布尔值函数)
p
,如果
p
下的每个集合的图像都是假的,那么就没有
p
产生
True
的集合。”设置->道具属于
类型
,而不是
道具
。当你在
Type
中时,
X->Y
应该作为从
X
Y
的函数来读取,当你在
Prop
中时,它应该被理解为
X
意味着
Y
(尽管在Curry Howard看来它们是一样的)


当函数返回
Prop
时,它通常被视为谓词或属性。因此,
forall P:Set->Prop
可以理解为“对于每个
Set
-值属性…”

谢谢,这非常有用。那么,为了澄清一下,像
for all a:b
这样的语句中,冒号右侧的任何内容都在
类型中,这是真的吗?该语句中冒号的解释是否与上面白话行中的解释相同,因此我们读到,定理
forall_exists
属于
(forall P:Set->Prop,(forall x,~(px))->~(exists x,px))
,也就是说,它是该语句的证明?是的,冒号右侧的所有内容都是
type
(或
Prop
Set
)但是这些都是
类型的子类型
。是的,声明
定理
定义
,和
引理
,本质上都是一样的:声明某一类型的某个术语。我不同意:
集合->属性
是一个函数的类型,它的参数在
集合
中,它的值在
中>Prop
。因此它宁愿是
Prop
值的,这已经通过说它是一个谓词来表示。我更希望你说
Set->Prop
类型的对象
P
是一个谓词,范围覆盖
Set
类型的元素,这是一种类型的类型。这种谓词的一个例子可以是
finite
,表示给定类型是有限的,
有限nat
不成立,而
有限bool
成立,具有适当的
有限
定义。