我有档案:
String0.ml
摘自String.v
(来自Coq图书馆)
String.ml
:是Ocaml
将我的测试文件从Coq提取到Ocaml之后,我想在Ocaml库中使用String.ml
,因此我编写了一个替换命令来将所有String0
替换为String
。< / p>
问题出在文件test.v
中,我使用了以下定义之一:
Definition beq_string := beq_dec string_dec.
在Ocaml的库中没有出现函数string_dec
,但它在Coq的字符串库中有
编译test.ml
open String
let beq_string = beq_dec string_dec
错误:未绑定值string_dec
我想将Ocaml的字符串库用于我的所有提取文件。我怎样才能编译string_dec
?
答案 0 :(得分:3)
也提取string_dec
功能。
如果您愿意稍微信任OCaml库,那么通过提取beq_string
以在字符串上使用内置相等性,您将获得更好的性能:
Extract Constant beq_string => "((=) : string->string->bool)".
答案 1 :(得分:2)
创建一个包含以下内容的MyString.ml模块:
module String0 = struct
include String
let string_dec = function ... (* the definition of string_dec *)
end
在Coq生成的所有文件中,以
开头open MyString
然后,您不需要将String0
重命名为String
,它将使用String模块中定义的函数以及您定义的string_dec
函数。