【发布时间】:2015-06-03 02:10:06
【问题描述】:
我对 Coq 处理存在量化的方式感到困惑。
我有一个谓词 P 和一个假设 H
P : nat -> Prop
H : exists n, P n
而当前的目标是(随便)
(Some goal)
如果我想在 H 中实例化 n,我会这样做
elim H.
不过淘汰后,现在的目标就变成了
forall n, P n -> (Some goal)
看起来 Coq 将存在量词转换为全称量词。我知道 (forall a, Pa -> Q a) -> ((exists a, Pa) -> Q a) 出于我对一阶逻辑的有限了解。但相反的命题似乎是不正确的。如果 'forall' 和 'exists' 不等价,为什么 Coq 会做这样的转换?
Coq 中的“elim”是否用更难证明的目标代替了目标?或者谁能说明为什么 ((exists a, P a) -> Q a) -> (forall a, P a -> Q a) 在一阶逻辑中成立?
【问题讨论】:
-
@Ptival 的回答很好地解释了这一点。另请注意,您只需添加一个
intros.即可在您的上下文中获取n。
标签: coq first-order-logic