Logic 如何证明排除中间在Coq中是无可辩驳的?
我试图从排除的中间证明以下简单定理是无可辩驳的,但在步骤1中几乎被卡住了:Logic 如何证明排除中间在Coq中是无可辩驳的?,logic,coq,coq-tactic,Logic,Coq,Coq Tactic,我试图从排除的中间证明以下简单定理是无可辩驳的,但在步骤1中几乎被卡住了: Theorem excluded_middle_irrefutable: forall (P:Prop), ~~(P \/ ~ P). Proof. intros P. unfold not. intros H. 现在我得到: 1 subgoals P : Prop H : P \/ (P -> False) -> False ______________________________________
Theorem excluded_middle_irrefutable: forall (P:Prop), ~~(P \/ ~ P).
Proof.
intros P. unfold not. intros H.
现在我得到:
1 subgoals
P : Prop
H : P \/ (P -> False) -> False
______________________________________(1/1)
False
如果我应用H
,那么目标将是p\/~p
,这被排除在中间,无法得到建设性的证明。但是除了应用之外,我不知道如何处理假设P\/(P->False)->False
:隐含->
是原始的,我不知道如何分解它。这是唯一的假设
我的问题是,仅使用原始策略(即没有神秘的auto
s)如何证明这一点
谢谢。我不是这方面的专家,但最近在网上讨论过。我将总结这条线索的结论。如果你想更彻底地理解这类问题,你应该看看
这个问题属于直觉命题演算的范畴,因此可以由
该线程还提供了一个更详细的证明。我将试图解释我是如何得出这个证据的。请注意,对于我来说,处理引理的编程语言解释通常更容易,所以我将这样做:
Theorem excluded_middle_irrefutable: forall (P:Prop), ~~(P \/ ~ P).
unfold not.
intros P f.
我们被要求编写一个函数,该函数接受函数f
,并生成类型为False
的值。此时到达False
的唯一方法是调用函数f
apply f.
因此,我们需要为函数f
提供参数。我们有两种选择,要么通过P
,要么通过P->False
。我看不到构造P
的方法,所以我选择了第二个选项
right.
intro p.
我们回到了原点,除了我们现在有一个p
要处理!
所以我们应用f
,因为这是我们唯一能做的事情
apply f.
再次,我们被要求向f
提供参数。不过现在这很容易,因为我们有一个p
可以使用
left.
apply p.
Qed.
该线程还提到了一个基于一些简单引理的证明。第一个引理是~(P/\~P)
第二个引理是~(p\/Q)->~p/\~Q
:
Lemma lma' (P Q:Prop) : ~(P \/ Q) -> ~P /\ ~Q.
unfold not.
intros H.
constructor.
- intro p.
apply H.
left.
apply p.
- intro q.
apply H.
right.
apply q.
Qed.
这些引理足以说明:
Theorem excluded_middle_irrefutable: forall (P:Prop), ~~(P \/ ~ P).
intros P H.
apply lma' in H.
apply lma in H.
apply H.
Qed.
+1感谢指针。这是广告宣传的。但正如邮件列表所说,它仍然是神秘的。(邮件列表中的解释是用非英语字符书写的,数学部分确实很难阅读)。你有没有可能用英语来解释大局?也许看看这个证明词(用tauto
和一些简化创建)会有一些意义:Check-fun(P:Prop)(H:~(P\/~P))=>False\ind-False(H)(或_-intor(fun-H0=>H(或_-introl H0))。
Lemma lma' (P Q:Prop) : ~(P \/ Q) -> ~P /\ ~Q.
unfold not.
intros H.
constructor.
- intro p.
apply H.
left.
apply p.
- intro q.
apply H.
right.
apply q.
Qed.
Theorem excluded_middle_irrefutable: forall (P:Prop), ~~(P \/ ~ P).
intros P H.
apply lma' in H.
apply lma in H.
apply H.
Qed.