使用 destruct 而不是 inversion

Using destruct instead of inversion

我明白inversion防爆原理:

Theorem ex_falso_quodlibet : forall (P:Prop),
  False -> P.
Proof.
  intros P contra.
  inversion contra.  Qed.

但是,我不明白 Coq 为了做同样的证明所采取的步骤,但使用 destruct 而不是 inversion:

Theorem ex_falso_quodlibet' : forall (P:Prop),
  False -> P.
Proof.
  intros P contra.
  destruct contra.  Qed.

False inductive 是如何被销毁的?对目标和完成证明有什么影响?

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

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

基本上,destructinversion 在这里做或多或少相同的事情。