string_dec и строка в библиотеке Ocaml
У меня есть файл:
String0.ml
извлеченный изString.v
(Это из библиотеки Coq)String.ml
: это струнная библиотека Ocaml
После извлечения моего тестового файла из Coq в Ocaml, я хочу использовать String.ml
в библиотеке Ocaml, поэтому я пишу команду замены, чтобы заменить все String0
в String
,
Проблема в файле test.v
Я использовал одно из определений:
Definition beq_string := beq_dec string_dec.
функция string_dec
не встречается в библиотеке Ocaml, но имеет в библиотеке строк Coq
Так что у меня ошибка при компиляции test.ml
open String
let beq_string = beq_dec string_dec
Ошибка: несвязанное значение string_dec
Я хочу использовать библиотеку строк Ocaml для всех моих файлов извлечения. Как я могу собрать string_dec
?
2 ответа
Извлечь string_dec
функция также.
Если вы готовы немного доверять библиотеке OCaml, вы получите намного лучшую производительность, извлекая beq_string
использовать встроенное равенство для строк:
Extract Constant beq_string => "((=) : string->string->bool)".
Создайте модуль 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
функция, которую вы определили.