我正在阅读Software Foundations一书。在the chapter on polymorphism中,有一节关于“隐式参数”。在本节中,有一行:
Arguments nil {X}.
当我尝试在Poly.v
文件(本章的来源,this tarball中提供)上运行Coq时,它停在上面一行,给我一个错误:
Error: No focused proof (No proof-editing in progress).
我已将Poly.v
文件缩减为这些内容,但仍然会出现同样的错误:
Inductive list (X:Type) : Type :=
| nil : list X.
Arguments nil {X}.
我可以在Coq reference manual找到关于此错误的唯一内容是
当人们试图在校对编辑模式之外使用校对编辑命令时,Coq会引发错误消息:没有聚焦证据。
我认为“证明编辑模式”是指使用策略证明定理的上下文。我认为它不是那种模式,Coq也不认为,因为它说“没有正在进行的校对编辑”。这是有道理的。
该错误声称Arguments
是“校对编辑命令”,但并未在its documentation中说明,the chapter on proof handling中未提及Arguments
。
这让我觉得Coq错误地将Arguments
视为校对编辑命令,但我不知道为什么。
我认为这对我的设置而不是Poly.v
文件本身有问题,因为它是Software Foundations一书的一部分。我正在使用CoqIDE,作为Coq 8.3pl4的一部分,随Ubuntu 12.04一起发布。
答案 0 :(得分:5)
这是您正在使用的coq版本的问题。当前版本的Software Foundations仅与coq 8.4兼容。如果您想继续而不升级coq,相关命令的旧版本是:
Implicit Arguments nil [[X]].
您可以在此处找到与您的coq版本兼容的poly.v的完整副本:
http://www.seas.upenn.edu/~cis500/cis500-s13/sf/Poly.html
玩得开心!