在 Ilya Sergey 的Programs and Proofs中,引入了ssrnat
's 命令.+1
并用于定义自然数上的一些函数。虽然它的用法在那里得到了很好的解释,但我也对它是如何定义的,更重要的是它是如何工作的很感兴趣。在那一章的前面介绍了nat
类型,我们可以用 " " 来验证定义Print nat.
,它产生:
Inductive nat : Set := O : nat | S : nat -> nat
然而,.+1
命令“ Print .+1.
”或“ Print +1.
”产生:
Syntax error: 'Fields' or 'Rings' or 'Hint' 'View' expected after 'Print' (in [command]).
甚至试图通过在其前面添加一个自然数来规避这一点,例如在 " Definition one: nat := 1.
" 后跟 " Print one.+1.
" 产生:
Syntax error: '.' expected after [command] (in [vernac_aux]).
但是,我想这个命令是在库中定义的,而不是语言的原语,所以感觉应该能够像其他任何人一样检查它的定义。
如果是这种情况,为什么命令不起作用以及如何.+1
打印定义?
注意:如果不可能,解释为什么也可以作为答案(以及命令的代码/工作的资源)。