将函数应用于Coq中等式的两侧?

将函数应用于Coq中等式的两侧?,coq,Coq,我想证明这一点 Theorem evenb_n__oddb_Sn : ∀n : nat, evenb n = negb (evenb (S n)). 我在n上使用归纳法。基本情况很简单,所以我在归纳情况下,我的目标如下: k : nat IHk : evenb k = negb (evenb (S k)) ============================ evenb (S k) = negb (evenb (S (S k))) 现在当然有一个基本的函数公理 a = b ->

我想证明这一点

Theorem evenb_n__oddb_Sn : ∀n : nat,
  evenb n = negb (evenb (S n)).
我在
n
上使用归纳法。基本情况很简单,所以我在归纳情况下,我的目标如下:

k : nat
IHk : evenb k = negb (evenb (S k))
============================
 evenb (S k) = negb (evenb (S (S k)))
现在当然有一个基本的函数公理

a = b -> f a = f b
对于所有函数
f:A->B
。因此,我可以将
negb
应用于双方,这将使我

k : nat
IHk : evenb k = negb (evenb (S k))
============================
 negb (evenb (S k)) = negb (negb (evenb (S (S k))))
这样我就可以从右到左使用我的归纳假设,右边的否定会相互抵消,
evenb
的定义将完成证明

现在,可能有更好的方法来证明这个特殊的定理(编辑:是的,我用另一种方法),但一般来说,这似乎是一件有用的事情,通过对两边应用函数来修改Coq中的等式目标的方法是什么


注意:我意识到这对任何任意函数都不起作用:例如,您可以使用它来证明
-1=1
,方法是在两侧应用
abs
。然而,它适用于任何内射函数(其中
fa=fb->a=b
),而
negb
是。也许有一个更好的问题要问,那就是给定了一个对命题进行操作的函数(例如,
negbx=negby->x=y
),我如何使用该函数来修改当前目标?

似乎你只想要
应用
策略。如果你有一个引理
negbinj:forall bc,negbb=negbc->b=c
,在你的目标上做
应用negbinj
会给你确切的答案