Types 你如何解读coq量词`对于所有P:Set->;道具`?
我是Coq的新手,在这里学习Mike Nahas的教程:。具体来说,我很难理解以下陈述: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
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
成立,具有适当的有限
定义。