Ocaml库中的string_dec和字符串

时间:2012-04-10 08:09:38

标签: ocaml coq coq-extraction

我有档案:

  • 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

2 个答案:

答案 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函数。