jaa*_*aam 4 proof negation coq quantifiers
在命题和谓词演算中证明了数十个引理之后(有些比其他的更具挑战性,但通常仍然可以在intro-apply-destruct自动驾驶仪上证明),我从一开始就打了一个~forall,并立即被抓住了。显然,我对 Coq 的理解和知识缺乏。所以,我要求使用低级 Coq 技术来证明一般形式的语句
~forall A [B].., C -> D.
exists A [B].., ~(C -> D).
Run Code Online (Sandbox Code Playgroud)
换句话说,我希望有一个通用的 Coq 方法来设置和触发反例。(量化上述函数的主要原因是它是 Coq 中的(或)原始连接词。)如果你想要例子,我建议例如
~forall P Q: Prop, P -> Q.
~forall P: Prop, P -> ~P.
Run Code Online (Sandbox Code Playgroud)
有一个相关的问题既没有提出也没有回答我的问题,所以我认为它不是重复的。
回想一下,它~ 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.
Run Code Online (Sandbox Code Playgroud)