Logic 在Coq中,如何使'simpl'命令只执行一步缩减?

Logic 在Coq中,如何使'simpl'命令只执行一步缩减?,logic,coq,induction,Logic,Coq,Induction,我对add的定义如下: Fixpoint add n m := match n with | 0 => m | S p => add p (S m) end. 在文件的后面部分,我试图证明以下目标: add(sn)0=sn 我调用siml命令,希望它减少 add(sn)0到add n(s0) 相反,它减少了 add(sn)0到add n 1 我怀疑siml命令只要能够执行,就会执行多个步骤 我的问题:是否有一个命令可以进行一步还原,还原 add (S n) 0 = S

我对add的定义如下:

Fixpoint add n m :=
  match n with
  | 0 => m
  | S p => add p (S m)
end.
在文件的后面部分,我试图证明以下目标:
add(sn)0=sn

我调用
siml
命令,希望它减少

add(sn)0
add n(s0)

相反,它减少了

add(sn)0
add n 1

我怀疑
siml
命令只要能够执行,就会执行多个步骤

我的问题:是否有一个命令可以进行一步还原,还原

add (S n) 0 = S n


s0
1
是相同的表达式

“相同”不仅意味着
s0=1
有效,而且coq的系统无法区分它们。相反,
1+0
1
不一样,而
1+0=1
保持不变

0
O
的表示法,
1
so
的表示法。 因此
s0
1
都表示相同的表达式
So


如果你开始证明
s0=1
,你会立即看到目标是
1=1
,或者
eq(so)(so)
,如果你通过
取消设置打印符号来禁用符号,那么
s0
1
是相同的表达式

“相同”不仅意味着
s0=1
有效,而且coq的系统无法区分它们。相反,
1+0
1
不一样,而
1+0=1
保持不变

0
O
的表示法,
1
so
的表示法。 因此
s0
1
都表示相同的表达式
So

如果您开始证明
s0=1
,您将立即看到目标是
1=1
,或者
eq(so)(so)
,如果您通过
取消设置打印标记来禁用标记

add n (S 0) = S n