4

在命题和谓词演算中证明了数十个引理(有些比其他引理更具挑战性,但通常仍然可以在intro-apply-destruct自动驾驶仪上证明)后,我开始使用 w/~forall并立即被卡住。显然,我缺乏对 Coq 的理解和知识。所以,我要求一种低级 Coq 技术来证明一般形式的陈述

~forall A [B].., C -> D.  
exists A [B].., ~(C -> D).

换句话说,我希望有一个通用的 Coq 方法来设置和触发反例。(量化上述函数的主要原因是它是 Coq 中的(或)原始连接词。)如果您需要示例,我建议例如

~forall P Q: Prop, P -> Q.
~forall P: Prop, P -> ~P.

有一个相关的问题既没有提出也没有回答我的问题,所以我想它不是重复的。

4

1 回答 1

5

回想一下,~ P定义为P -> False。换句话说,要显示这样一个陈述,假设P并得出一个矛盾就足够了。关键是你可以以P任何你喜欢的方式用作假设。在普遍量化陈述的特殊情况下,该specialize策略可能会派上用场。这种策略允许我们用一个特定的值来实例化一个普遍量化的变量。例如,

Goal ~ forall P Q, P -> Q.
Proof.
  intros contra.
  specialize (contra True False). (* replace the hypothesis 
                                     by [True -> False] *)
  apply contra. (* At this point the goal becomes [True] *)
  trivial.
Qed. 
于 2016-03-01T15:29:48.833 回答