可以在Coq中破坏使用吗?

时间:2015-10-07 17:57:02

标签: coq coq-tactic

destruct 可用于在Coq中拆分。但它似乎也可用于暗示? 例如,我想证明~~(~~P -> P)

Lemma test P : ~~(~~P -> P).
Proof.
unfold not.
intro pffpf.
apply pffpf.
intro pff.
destruct pff.
intro p.
apply pffpf.
intro pff.
exact p.
Qed.

destruct pff.工作正常时,我不知道为什么?有谁可以帮我解释一下?

1 个答案:

答案 0 :(得分:3)

如果暗示的结论是归纳(或归纳)类型,destruct策略就会产生影响。因此它适用于您的示例,因为False是归纳定义的。但是,如果我们想出False的不同定义,它可能不一定有效。例如,以下脚本在destruct pff行失败:

Definition False : Prop := forall A : Prop, A.
Definition not (P : Prop) : Prop := P -> False.

Lemma test P : not (not (not (not P) -> P)).
unfold not.
intro pffpf.
apply pffpf.
intro pff.
destruct pff. (* Fails here *)
intro p.
apply pffpf.
intro pff.
exact p.
Qed.