Logic 在Coq中,如何使'simpl'命令只执行一步缩减?
我对add的定义如下: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
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