У кого-нибудь есть небольшой рабочий фрагмент кода для чтения строк из файла в Coq (похоже, это делает библиотека ynot, но я не могу понять)?
Ynot можно найти здесь: http://ynot.cs.harvard.edu/ Дистрибутив содержит Каталог IO в примерах, который включает FS.v
, который определяет такие вещи, как:
Fixpoint ReadFile (fm : fd_model) (ms : list mode) (fd : File fm ms) (str : string) {struct str} : Trace :=
match str with
| EmptyString => Read fd None :: nil
| String a b => (ReadFile fd b) ++ (Read fd (Some a) :: nil)
end.
Но я не могу понять, как его вызвать.
Я пробовал такие вещи, как:
Eval compute in ReadFile (File (FileModel "demo.txt") [R]).
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Error: The term "File (FileModel "demo.txt") [R]" has type "Set" while it is expected to have type "File ?16 ?17".
Точно так же проект Quark (http://goto.ucsd.edu/quark/) определяет VCRIO.v
с альтернативные механизмы.
Любая помощь приветствуется!