Как использовать модуль Domain_builder?

#frama-c

Вопрос:

Я хотел бы реализовать простой абстрактный домен, используя функторы, предоставляемые модулем Domain_builder (задокументировано в разделе EVA->Домены), но я не могу открыть модуль. Простой файл ocaml x.ml:

 open Domain_builder
 

и команда frama-c -load-script x.ml выдает ошибку несвязанного модуля Domain_builder. Однако я могу импортировать другие модули, описанные в этом разделе (например, Cvalue).

Похоже, что модуль Domain_builder не экспортируется файлом EVA .mli (https://git.frama-c.com/pub/frama-c/-/blob/master/src/plugins/value/Eva.mli), но и не является модулем Cvalue.

Я делаю что-то не так, или модуль Domain_builder действительно отсутствует в подписи EVA?

Ответ №1:

К сожалению, вы правы, Domain_builder на данный момент его нельзя использовать за пределами Eva (ПРИМЕЧАНИЕ: если бы он был экспортирован, вам open Eva.Domain_builder в любом случае пришлось бы это сделать).

Что касается того, почему Cvalue доступно: по историческим причинам этот модуль вместе со всеми файлами внутри src/plugins/value_types фактически рассматривается как модули ядра.