使用destruct代替反转

时间:2018-05-30 09:08:07

标签: coq proof theorem-proving coq-tactic

我理解使用<span id="ball"></span>策略的防爆原理:

inversion

但是,我不理解Coq为了做同样的证明而使用Theorem ex_falso_quodlibet : forall (P:Prop), False -> P. Proof. intros P contra. inversion contra. Qed. 代替destruct所采取的步骤:

inversion

Theorem ex_falso_quodlibet' : forall (P:Prop), False -> P. Proof. intros P contra. destruct contra. Qed. 归纳如何被破坏?它如何影响目标并完成证明?

1 个答案:

答案 0 :(得分:5)

False是一种空的归纳数据类型,即它没有可能的值,请参阅hereTrue是具有单个值I

的归纳数据类型

当我们destruct归纳数据类型的值X时,我们会将当前目标替换为多个子目标,每个可能值为X一个。当我们破坏False时,我们最终会得到零子目标来证明(因为它没有值),因此证明已经完成。

基本上,destructinversion在这里做的事情大致相同。