您如何有效地查找Coq中定义标识符的位置?

时间:2015-07-18 18:34:32

标签: emacs coq coqide proof-general

在大多数IDE或文本编辑器中,您可以右键单击术语,然后转到定义该术语的文件。 CoqIDE似乎没有那个,所以我一直在做coqdoc myfile.v --html,然后转到生成的HTML文档。但该文件中唯一可点击的术语是Coq标准库。由ssreflect定义的术语(例如)不可单击。

在Coq文件中,是否有一种标准方法可以快速查找定义某些术语/标识符(以及它的源代码)的位置?无论是在CoqIDE还是在emacs + ProofGeneral中(我正在使用CoqIDE,但如果emacs / ProofGeneral具备此功能,我会切换。)

或者是为每个Coq项目和您使用的依赖项生成文档的标准方法吗?

2 个答案:

答案 0 :(得分:5)

如果您突出显示某个字词,请执行查询 - >找到,或者您评估Locate some_identifier.,您将获得常量的全名。如果您知道依赖项的安装位置,这将告诉您在哪里查找标识符。

编辑:如果您想要标识符的定义,可以Print。如果您只想要它的类型,可以使用AboutCheck(它也接受表达式,而不仅仅是标识符)。

答案 1 :(得分:2)

在Proof General之上有一个工具,名为company-coq。默认情况下,它具有绑定到M-.键盘快捷键的跳转定义功能。

只有当Require命令或其变体需要包含定义的模块时,它才能跳转到光标下的定义(甚至是标准库)。