【发布时间】:2015-12-25 02:17:41
【问题描述】:
我试图从an online course 证明以下简单定理,即排除中间是无可辩驳的,但在第 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
______________________________________(1/1)
False
如果我apply H,那么目标将是P \/ ~P,它被排除在中间并且不能被建设性地证明。但是除了apply之外,我不知道假设P \/ (P -> False) -> False可以做什么:暗示->是原始的,我不知道如何destruct或分解它。这是唯一的假设。
我的问题是,如何仅使用原始策略(as characterized here,即没有神秘的autos)来证明这一点?
谢谢。
【问题讨论】:
-
也许看看证明项(用
tauto和一些简化创建)是有道理的:Check fun (P : Prop) (H : ~ (P \/ ~ P)) => False_ind False (H (or_intror (fun H0 => H (or_introl H0)))).
标签: logic coq coq-tactic