Вы видели кандидатскую диссертацию Артура Шерго, « Характеристические формулы для механизированной верификации программ» ?
Вместо того, чтобы строить систему типов и семантику малых шагов как индуктивные отношения, он дает метод для преобразования программ Caml в характеристические формулы. Это в основном обобщение семантики предикатного преобразователя для поддержки очень большого подмножества Ocaml - особенно, включая небезопасные приведения типа Obj.magic
. Цитирую его тезис:
Я сосредоточился на подмножестве языка программирования OCaml, который представляет собой последовательный язык программирования высокого уровня с вызовом по значению. Текущая реализация CFML поддерживает ядро λ-исчисления, включая функции высшего порядка, рекурсию, взаимную рекурсию и полиморфную рекурсию. Он поддерживает кортежи, конструкторы данных, сопоставление с образцом, ссылочные ячейки, записи и массивы. Я предоставляю дополнительную библиотеку Caml, которая добавляет поддержку нулевых указателей и сильных обновлений.
Это очень привлекательный подход, если вы хотите доказать правильность конкретной программы Caml (тем не менее, если вы заинтересованы в ее метатеории).