【发布时间】:2019-11-20 23:13:07
【问题描述】:
我是 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 可以解释为从集合空间映射到命题空间的函数吗?我用过“产生”和“暗示存在”这样的短语;它是否正确?有没有更正确的说法?
感谢您的所有帮助!
编辑:对于任何有类似问题的人,我的困惑主要是对 Curry-Howard 同构的无知。
我的解释(可能仍然有点不稳定)现在该定理读作“对于每个谓词(布尔值函数)P 范围超过 Set 类型的元素,如果 P 下的每个集合的图像为假,则不存在P 产生True 的集合。”
【问题讨论】:
标签: types coq proof theorem-proving