无法找到库

时间:2016-12-04 19:04:39

标签: coq

同一个Linux命令在一个环境中成功,而在另一个环境中失败:

library(microbenchmark)
df <- data.frame(X1 = 1:5, X2 = 6:10, X3 = c(6, 2, 3, 0, 2))

f1 <- function(df) apply(df[1:3], 1, FUN = anyDuplicated)>0
f2 <- function(df) Reduce(`|`, lapply(df[1:2], `==`, df[,3]))
f3 <- function(df) with(df, X3==X1 | X3==X2)

all(f1(df)==f2(df))
#[1] TRUE
all(f1(df)==f3(df))
#[1] TRUE

res <- microbenchmark(f1(df), f2(df), f3(df))

print(res, order="mean")

# Unit: microseconds
   # expr     min       lq      mean  median      uq     max neval
 # f3(df)  14.115  15.3980  17.57113  17.537  17.965  40.634   100
 # f2(df)  79.130  80.8405  86.41780  85.118  88.325 124.468   100
 # f1(df) 223.273 225.6255 235.95907 228.619 238.243 497.445   100

我遇到的失败是在Debian stretch和Coq v8.5

之下
$ coqtop -lv test.v -I Lib

我收到的错误信息是:

$ uname -a
Linux front 4.8.0-1-amd64 #1 SMP Debian 4.8.7-1 (2016-11-13) x86_64 GNU/Linux

$ coqtop -v
The Coq Proof Assistant, version 8.5 (June 2016)
compiled on Jun 9 2016 12:4:46 with OCaml 4.02.3

与同一来源相关的同一命令成功的环境是:

Welcome to Coq 8.5 (June 2016)
Require Import libtest.
Error during initialization:
File "/home/user/dev/coq/test.v", line 1, characters 15-22:
Error: Unable to locate library libtest.

成功的结果如下:

$ uname -a 
Linux back 3.16.0-4-amd64 #1 SMP Debian 3.16.36-1+deb8u2 (2016-10-19)x86_64 GNU/...

$ coqtop
The Coq Proof Assistant, version 8.4pl4 (July 2014)
compiled on Jul 27 2014 13:34:24 with OCaml 4.01.0

所以我想弄清楚发生了什么,希望得到答案 this post但无济于事。

为了这个问题,我将源代码简化为最简单的:

test.v

Welcome to Coq 8.4pl4 (July 2014)
Require Import libtest.

Coq <     

LIB / libtest.v

Require Import libtest.

如果这很重要,我已经在每个环境中重新编译了(空)库文件<empty file>

libtest.v

感谢任何帮助。

2 个答案:

答案 0 :(得分:5)

实际上,-I的行为在8.4到8.5之间变化。在Coq的更改日志中,我们可以找到an interesting line。正如更改日志中所示,并且other answer建议您使用-R

答案 1 :(得分:4)

以下适用于我(我使用Coq 8.5pl3)。 让我们编译我们的库,将它放在Lib命名空间中:

$ pwd
<...>/libtest-question
$ cd Lib
$ coqc -R . "Lib" libtest.v
$ cd ..

然后让我们修改我们的test.v

$ cat test.v
Require Import Lib.libtest.

并加载

$ coqtop -R Lib Lib -l test.v

-Q开关也可以使用,有关更多详细信息,请参阅参考手册&#39; §14.3.3