你如何有效地查找在 Coq 中定义标识符的位置?
How do you look up where identifiers are defined in Coq efficiently?
在大多数 IDE 或文本编辑器中,您可以右键单击一个术语,它会将您带到定义该术语的文件。 CoqIDE 似乎没有那个,所以我一直在做 coqdoc myfile.v --html
,然后转到生成的 HTML 文档。但该文件中唯一可点击的术语是针对 Coq 标准库的。 ssreflect 定义的术语(例如)不可点击。
是否有一种标准方法可以快速查找在 Coq 文件中定义 term/identifier 的地方(及其源代码)?在 CoqIDE 或 emacs + ProofGeneral 中(我正在使用 CoqIDE,但如果 emacs/ProofGeneral 具有此功能,我会切换)。
或者是为您使用的每个 Coq 项目和依赖项生成文档的标准方法?
如果您突出显示一个术语,然后执行查询 -> 定位,或者您计算 Locate some_identifier.
,您将获得常量的全名。如果您知道依赖项的安装位置,这将告诉您在哪里查找标识符。
编辑:如果你想要标识符的定义,你可以Print
它。如果你只想要它的类型,你可以使用 About
,或 Check
(它也接受表达式,而不仅仅是标识符)。
有一个工具在 Proof General 之上运行,称为 company-coq。默认情况下,它具有跳转到定义功能绑定到 M-.
键盘快捷键。
仅当Require
命令或其变体需要包含定义的模块时,它才能跳转到光标下的定义(甚至跳转到标准库)。
在大多数 IDE 或文本编辑器中,您可以右键单击一个术语,它会将您带到定义该术语的文件。 CoqIDE 似乎没有那个,所以我一直在做 coqdoc myfile.v --html
,然后转到生成的 HTML 文档。但该文件中唯一可点击的术语是针对 Coq 标准库的。 ssreflect 定义的术语(例如)不可点击。
是否有一种标准方法可以快速查找在 Coq 文件中定义 term/identifier 的地方(及其源代码)?在 CoqIDE 或 emacs + ProofGeneral 中(我正在使用 CoqIDE,但如果 emacs/ProofGeneral 具有此功能,我会切换)。
或者是为您使用的每个 Coq 项目和依赖项生成文档的标准方法?
如果您突出显示一个术语,然后执行查询 -> 定位,或者您计算 Locate some_identifier.
,您将获得常量的全名。如果您知道依赖项的安装位置,这将告诉您在哪里查找标识符。
编辑:如果你想要标识符的定义,你可以Print
它。如果你只想要它的类型,你可以使用 About
,或 Check
(它也接受表达式,而不仅仅是标识符)。
有一个工具在 Proof General 之上运行,称为 company-coq。默认情况下,它具有跳转到定义功能绑定到 M-.
键盘快捷键。
仅当Require
命令或其变体需要包含定义的模块时,它才能跳转到光标下的定义(甚至跳转到标准库)。