I have the following setup:
$ cat _CoqProject
-I .
-Q . Top
StrategyTactic.v
strategy_tactic.ml
strategy_tactic.mli
strategy_tactic_plugin.mlg
strategy_tactic_plugin.mllib
$ cat StrategyTactic.v
Declare ML Module "strategy_tactic_plugin".
$ cat strategy_tactic.ml
open Genarg
let wit_strategy_level : Conv_oracle.level uniform_genarg_type =
make0 "strategy_level"
$ cat strategy_tactic.mli
open Genarg
val wit_strategy_level : Conv_oracle.level uniform_genarg_type
$ cat strategy_tactic_plugin.mlg
{
open Ltac_plugin
open Strategy_tactic
}
DECLARE PLUGIN "strategy_tactic_plugin"
TACTIC EXTEND strategy
| [ "strategy" strategy_level(v) ] -> { Proofview.tclUNIT () }
END
$ cat strategy_tactic_plugin.mllib
Strategy_tactic_plugin
Strategy_tactic
When I run coq_makefile -f _CoqProject -o Makefile && make clean && make
, I get
CLEAN
COQDEP VFILES
*** Warning: strategy_tactic.mli already found in . (discarding ./strategy_tactic.mli)
*** Warning: strategy_tactic_plugin.mllib already found in . (discarding ./strategy_tactic_plugin.mllib)
*** Warning: strategy_tactic.ml already found in . (discarding ./strategy_tactic.ml)
*** Warning: strategy_tactic_plugin.mlg already found in . (discarding ./strategy_tactic_plugin.mlg)
COQPP strategy_tactic_plugin.mlg
CAMLDEP strategy_tactic.mli
COQDEP strategy_tactic_plugin.mllib
*** Warning: strategy_tactic_plugin.mllib already found in . (discarding ./strategy_tactic_plugin.mllib)
CAMLDEP strategy_tactic.ml
CAMLDEP strategy_tactic_plugin.ml
CAMLC -c strategy_tactic.mli
CAMLOPT -c strategy_tactic.ml
CAMLOPT -c strategy_tactic_plugin.ml
CAMLOPT -a -o strategy_tactic_plugin.cmxa
CAMLOPT -shared -o strategy_tactic_plugin.cmxs
COQC StrategyTactic.v
File "./StrategyTactic.v", line 1, characters 0-43:
Error: while loading
/home/jgross/Documents/repos/fiat-crypto/src/Util/plugins/strategy_tactic_plugin.cmxs:
no implementation available for Strategy_tactic
Makefile:658: recipe for target 'StrategyTactic.vo' failed
make[1]: *** [StrategyTactic.vo] Error 1
Makefile:320: recipe for target 'all' failed
make: *** [all] Error 2
I’m running Coq master (somewhere between 8.10 and 8.11). Can someone explain what’s going on here?