在命题和谓词演算中证明了数十个引理(一些比其他人更具挑战性,但通常在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.
有一个related question既没有提出也没有回答我的,所以我认为它不是重复的。
答案 0 :(得分:4)
回想一下,~ 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.