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中解释了反转
和破坏
。(在页面中搜索“倒装”一词,您将直接找到它)。