如何在 Coq 中证明 (~Q -> ~P) -> (P -> Q)

How to prove (~Q -> ~P) - > (P -> Q) in Coq

我正在尝试用 coq 证明 (~Q -> ~P) -> (P -> Q),这是对立定理 (P-> Q) (~Q -> ~P ).目前我正在考虑使用相同的逻辑来证明这样的对立定理:

不展开。前奏 P Q. 前奏 A B C. 申请 B. 申请 A. 申请 C.

然而我卡在了开头。也许我需要额外的公理来证明对立定理的逆定理。谁能帮帮我?

是的,你需要一些额外的能力(经典逻辑)来做到这一点。 放

Require Import Classical.

在文件的开头。 现在当你有一个命题 Q

destruct (classic Q) as [Q_holds|NQ_holds].

它创建了两个子目标:一个在 Q 成立时,一个在 ~Q 成立时。

连同定理 False_ind(可以让您证明 False 中的任何内容)应该足以得出您的证明。

Require Import Classical.

Lemma myproof :  forall (P Q : Prop), (~Q -> ~P) -> (P -> Q) . 
unfold not. intros P Q. intros A B.
destruct (classic Q) as [Q_holds|NQ_holds].
apply Q_holds.
apply False_ind.
apply A.
apply NQ_holds.
apply B.
Qed.