Coq:处理不等式(<;>;)

Coq:处理不等式(<;>;),coq,proof,theorem-proving,coq-tactic,Coq,Proof,Theorem Proving,Coq Tactic,我试图理解在Coq中处理不等式的逻辑 当目标中存在时,执行简介相反。将目标更改为假,并将目标移动到假设,但切换为=。我想我理解它的声音。如果我有as目标AB,那么a=bas假设就会产生矛盾 然而,我不能在Coq做相反的事情。如果我把a=b作为目标,我就不能把False作为目标,把ab作为假设这个介绍是否合乎逻辑?是否仅仅因为不需要完成证明就不支持它? 当处于一个假设H中时,执行析构函数H.将删除该假设(我不能执行析构函数(H)eqn:H.),它会将任何目标切换到与H相同的目标,但将切换为=/c

我试图理解在Coq中处理不等式的逻辑

  • 当目标中存在
    时,执行
    简介相反。
    将目标更改为
    ,并将目标移动到假设,但
    切换为
    =
    。我想我理解它的声音。如果我有as目标
    AB
    ,那么
    a=b
    as假设就会产生矛盾

    然而,我不能在Coq做相反的事情。如果我把a=b作为目标,我就不能把False作为目标,把ab作为假设这个
    介绍是否合乎逻辑?是否仅仅因为不需要完成证明就不支持它?

  • 处于一个假设
    H
    中时,执行
    析构函数H.
    将删除该假设(我不能执行
    析构函数(H)eqn:H.
    ),它会将任何目标切换到与
    H
    相同的目标,但将
    切换为
    =/code>我不明白这里的逻辑。如果我有一个假设,这是一个不平等,我不认为没有它是如何相同的平等为目标

    一个不等式是如何被
    析构函数使用的?

    如果我有一个自相矛盾的假设G
    0
    ,为了完成证明并说明它是自相矛盾的,我需要做
    解构G.(*现在目标是0=0*)。自反性。
    为什么不可能像假设
    sn=0那样只做
    倒装G.
    ?。

事实上,我有4个相关的问题,用粗体标记为

这篇介绍[关于目标
a=b
]在逻辑上合理吗

如果我理解你的问题,你想知道是否有可能 设定目标
a=b
,调用
intros contra
,并将其转换为目标
H:a b |-False
。这是合理的,但在Coq的任意类型的
a
b
的基本构造逻辑中是无法推导的:它断言命题
a=b
支持双重否定消去(
~(~a=b)->a=b
)。Coq不支持这一点,因为这意味着在不同的逻辑形式下工作

析构函数如何使用不等式

正如叶普顿所说,
ab
被定义为
a=b->False
,虚假性被归纳定义为没有构造器的命题;因此,破坏类型为
False
的东西就完成了证明。此外,对
A->B
类型的对象调用
destruct
,其效果大致相当于生成
A
类型的目标,将该证明输入到蕴涵中以获得
B
的证明,然后对
B
的证明调用
destruct
。在你的情况下,这意味着完全按照你描述的去做

为什么不可能像假设的那样,只做
反转G.


我的猜测是,
inversion
没有
destruct
那么宽松,也没有像我上面解释的那样扩展到处理含义。

ab
基本上是
a=b->False
的简写,其中
False
是一个空的归纳类型。我认为这个问题真的应该分为四个不同的问题。分开问题的理由:我可以回答第一个问题,不能回答第二个和第四个问题,并且可以链接到与第三个问题相似的问题。我想你是对的@yeputons。但是现在,感谢你的评论和回答,一切都得到了回答。谢谢,现在一切都清楚了。关于
destructh
之外的逻辑,我终于理解了将
更改为
=
的目标。如果我证明
=
,那么
假设是矛盾的,所以一切都遵循(爆炸原理)。