[英]How do you read the coq quantifier `forall P: Set -> Prop`?
我是 Coq 的新手,正在阅读 Mike Nahas 的教程: nahas_tutorial.v 。 具体来说,我无法理解下面给出的陈述:
Theorem forall_exists : (forall P : Set -> Prop, (forall x, ~(P x)) -> ~(exists x, P x)).
以上是我目前的解读,欢迎指正。
语句Set -> Prop
是一个可以扩展为forall s: Set, Prop
的命题,我将其理解为“对于Set
的每个证明(读取实例),我们也有一个Prop
的证明(实例)”。
因此forall P: Set -> Prop
可以粗略地理解为“对于每个证明一个集合产生一个命题”。
然后对于(forall x, ~(P x))
,我的猜测是x
被 Coq 推断为Set
类型,并且它被解读为“每个集合都会产生一个不可证明/错误的命题”。
对于~(exists x, P x)
,我读到因为不存在暗示 P 下存在真命题的集合。
这些似乎在逻辑上是等价的。 我只是在语言上挣扎。 P
可以解释为从集合空间映射到命题空间的 function 吗? 我使用了“产生”和“暗示存在”这样的短语; 这个对吗? 有没有更正确的方法来 state 这个?
感谢您的任何帮助!
编辑:对于任何有类似问题的人,我的困惑主要是对 Curry-Howard 同构的无知。
我的解释(也许仍然有点摇摆不定)现在定理读作“对于每个谓词(布尔值函数) P
范围内的Set
类型的元素,如果P
下的每个集合的图像都是假的,那么没有集合P
产生True
。”
Set -> Prop
属于Type
,而不是Prop
。 当你在Type
时, X -> Y
应该被读作从X
到Y
的 function ,当你在Prop
时,它应该被读作X
暗示Y
(尽管 Curry-Howard 这些是相同的)。
当 function 返回Prop
时,它通常被视为谓词或属性。 所以forall P: Set -> Prop
可以读作“对于每个Set
值的属性......”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.