我对add的定义如下:
Fixpoint add n m :=
match n with
| 0 => m
| S p => add p (S m)
end.
稍后,我试图证明以下目标:add (S n) 0 = S n
我打电话给simpl
命令,希望它会减少
[add (S n) 0
至add n (S 0)
。
反而减少
[add (S n) 0
至add n 1
我怀疑simpl
命令只要可以执行就执行多个步骤。
我的问题:是否有一个命令可以减少一级,减少
add (S n) 0 = S n
to
add n (S 0) = S n
?
[S 0
和1
是相同的表达式。
“相同”不仅意味着S 0 = 1
成立,而且Coq的系统无法区分它们。 1 + 0 = 1
成立,但1 + 0
和1
不相同。
0
是O
的符号,1
是S O
的符号。因此,S 0
和1
都表示相同的表达式S O
。