如何在Coq搜索模式中指定显式相等?

如何在Coq搜索模式中指定显式相等?,coq,Coq,假设我们有一个假设x-x=0 有人会假设这个定理已经存在,所以我们启动SearchAbout(-=0)。然而,在本例中,我们实际上知道这些下划线是等效的。因此,我更愿意编写类似于SearchAbout(fun a=>a-a=0)之类的东西,或者类似这样的东西 可能吗?首先,您需要导入Arith模块(或支持您想要处理的数字类型的推理的模块): 然后Search(?x-?x=0)。将返回 Nat.sub\u diag:forall n:Nat,n-n=0 您还可以使用SearchRewrite(?x

假设我们有一个假设
x-x=0

有人会假设这个定理已经存在,所以我们启动
SearchAbout(-=0)
。然而,在本例中,我们实际上知道这些下划线是等效的。因此,我更愿意编写类似于
SearchAbout(fun a=>a-a=0)
之类的东西,或者类似这样的东西


可能吗?

首先,您需要导入
Arith
模块(或支持您想要处理的数字类型的推理的模块):

然后
Search(?x-?x=0)。
将返回

Nat.sub\u diag:forall n:Nat,n-n=0

您还可以使用
SearchRewrite(?x-?x)更简洁地搜索相关的重写引理。
(注意,您只需要指定等式的一侧)


顺便说一句,
SearchAbout
命令已被弃用。

ooo,因此
?x-?x
是秘密调味品!非常感谢。(还有,我应该只使用
Search
then吗?)?所以对于real和nat等有一个单独的例子吗?我不明白,抱歉,nat在加法下形成一个幺半群,但不是一个群。哦,我是个白痴,我想说整数。似乎有一些东西的R_u和Z_u版本,而不是一些结构的更一般的实例:(.阿贝尔群(“Z-模”)由一些Coq库定义,例如数学comp或数学类)
Require Import Coq.Arith.Arith.