Ви бачили докторську дисертацію Артура Шаргеро, характерні формули для верифікації механізованої програми ?
Замість того, щоб будувати типову систему та малі крокові семантики як індуктивні відносини, він дає техніку перетворення програм Камля в характерні формули. Це, в основному, узагальнення семантики предикатних трансформаторів для підтримки дуже великої підмножини Ocaml, зокрема, включаючи небезпечні ролі на зразок Obj.magic
. Цитувати його тезу:
Я зосередився на підмножині мови програмування OCaml, яка є послідовною мовою програмування високого рівня за викликом. Поточна реалізація CFML підтримує основне λ-обчислення, включаючи функції вищого порядку, рекурсію, взаємну рекурсію та поліморфну рекурсію. Він підтримує кортежі, конструктори даних, відповідність шаблонів, опорні комірки, записи та масиви. Я надаю додаткову бібліотеку Caml, яка додає підтримку нульових покажчиків та надійних оновлень.
Це дуже привабливий підхід, якщо ви хочете довести певну програму Caml правильною (тим більше, якщо вас цікавить її метатеорія).