你可以使用 congr_arg 引理
congr_arg
lemma congr_arg {�� : Sort u} {�� : Sort v} {a? a? : ��} (f : �� �� ��) : a? = a? �� f a? = f a?
这意味着如果为函数提供相等的输入,输出值也将相等。
证据如下:
example (a b : nat) (H : a = b) : a + 1 = b + 1 := congr_arg (�� n, n + 1) H
请注意,精益能够推断出我们的功能 �� n, n + 1 ,所以证明可以简化为 congr_arg _ H 。
�� n, n + 1
congr_arg _ H
更一般:a = b - >环中的a + c = b + c
import algebra.ring open algebra variable {A : Type} variables [s : ring A] (a b c : A) include s example (a b c : A) (H1 : a = b) : a + c = b + c := eq.subst H1 rfl
而 congr_arg 一般来说这是一个很好的解决方案,这个具体的例子确实可以解决 eq.subst +更高阶的统一(其中 congr_arg 在内部使用)。
eq.subst
example (a b : nat) (H1 : a = b) : a + 1 = b + 1 := eq.subst H1 rfl