Coq 使用析构函数代替反转

Coq 使用析构函数代替反转,coq,proof,theorem-proving,coq-tactic,Coq,Proof,Theorem Proving,Coq Tactic,我理解使用倒置策略的防爆原理: Theorem ex_falso_quodlibet : forall (P:Prop), False -> P. Proof. intros P contra. inversion contra. Qed. 然而,我不理解Coq为了做同样的证明而采取的步骤,但是使用析构函数而不是反转: Theorem ex_falso_quodlibet' : forall (P:Prop), False -> P. Proof. intro

我理解使用
倒置
策略的防爆原理:

Theorem ex_falso_quodlibet : forall (P:Prop),
  False -> P.
Proof.
  intros P contra.
  inversion contra.  Qed.
然而,我不理解Coq为了做同样的证明而采取的步骤,但是使用
析构函数
而不是
反转

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

False
是如何被破坏的?它对目标和完成证明有何影响?

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

当我们分解归纳数据类型的值
X
时,我们用多个子目标替换当前目标,每个
X
的可能值一个子目标。当我们销毁
False
时,我们最终得到零个子目标来证明(因为它有零值),因此证明就完成了


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

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

当我们分解归纳数据类型的值
X
时,我们用多个子目标替换当前目标,每个
X
的可能值一个子目标。当我们销毁
False
时,我们最终得到零个子目标来证明(因为它有零值),因此证明就完成了


基本上,
destruct
inversion
在这里做的事情或多或少是一样的。

@等待开发。。。Adam Chlipala在他的书CPDT中解释了
反转
破坏
。(在页面中搜索“反转”一词,您将直接找到它)。@等待Dev。。。Adam Chlipala在他的书CPDT中解释了
反转
破坏
。(在页面中搜索“倒装”一词,您将直接找到它)。