Формальна семантика OCaml в Coq


14

Семантика великої підмножини OCaml, що називається OCamllight , була формалізована в HOL Оуенсом кілька років тому. Зовсім недавно в Нупрлі були здійснені Крейц, Хайден та Хікі, теоретична семантика типу меншого підмножини OCaml .

Чи є подібний розвиток у Coq?


Можливо, вас зацікавить CakeML: cakeml.org . Я не OCaml спеціально, хоча.
jmite

Відповіді:


12

Ви бачили докторську дисертацію Артура Шаргеро, характерні формули для верифікації механізованої програми ?

Замість того, щоб будувати типову систему та малі крокові семантики як індуктивні відносини, він дає техніку перетворення програм Камля в характерні формули. Це, в основному, узагальнення семантики предикатних трансформаторів для підтримки дуже великої підмножини Ocaml, зокрема, включаючи небезпечні ролі на зразок Obj.magic. Цитувати його тезу:

Я зосередився на підмножині мови програмування OCaml, яка є послідовною мовою програмування високого рівня за викликом. Поточна реалізація CFML підтримує основне λ-обчислення, включаючи функції вищого порядку, рекурсію, взаємну рекурсію та поліморфну ​​рекурсію. Він підтримує кортежі, конструктори даних, відповідність шаблонів, опорні комірки, записи та масиви. Я надаю додаткову бібліотеку Caml, яка додає підтримку нульових покажчиків та надійних оновлень.

Це дуже привабливий підхід, якщо ви хочете довести певну програму Caml правильною (тим більше, якщо вас цікавить її метатеорія).


Отже, якщо я правильно розумію, специфікація семантики Ocaml вбудована в систему. Чи можна інтерпретувати характерну формулу (деякої ключової функції системи) як таку специфікацію? Крім того, я припускаю, що система написана в OCaml. Чи можна вказати та довести її правильність у самій системі?
Андреа Асперті

Для даної програми OCaml її характерною формулою можна вважати денотаційну семантику, "найменш загальну" специфікацію, яка може бути використана для доведення будь-яких бажаних властивостей програми. Якщо говорити про «правильність» CFML, то питання: стосовно якої альтернативної формальної семантики?
gasche

Дивно мати програму, яка повинна сертифікувати програмне забезпечення і поведінку якої неможливо вказати :)
Andrea Asperti

@AndreaAsperti Що ви маєте на увазі під "вбудованою системою"? Ідея, що стоїть за характерними формулами (CF), є досить однозначною: перенесення програм на логічні формули (як правило, до- і постумовні) такі формули точно описують семантику програм. Іншими словами, дві програми задовольняють однакові КФ, якщо вони контекстуально не відрізняються. Карта від програми до КЗ робиться за допомогою індукції структури програми і може орієнтуватися на будь-яку достатньо виразну логіку. А. Логе Шаргеро логіка Кока, але це умовний вибір.
Мартін Бергер

1
@MartinBerger: Папір Guéneau et al доводить лише надійність, оскільки похідні дописи / публікації не характеризують програм, з яких вони походять. Їх КФ отримані з нетипізованої семантики CakeML, але введена мова має іншу спостережливість. (Для практичної перевірки це не дуже важливо, і це простіше.)
Неель Крішнасвамі

8

Вас може зацікавити « Сертифікована реалізація МС зі структурним поліморфізмом та рекурсивними типами Жак Гарріга» , яка встановлює надійність статичної та динамічної семантики та властивості виведення типу для мови ML (рекурсія та) структурний поліморфізм, таким чином формалізуючи один із більш досконалі кути OCaml (поліморфні варіанти та типи об’єктів).

Зважаючи на це, ця робота спрямована більше на перевірку надійності більш досконалих частин системи типів, ніж на покриття набору функцій існуючих програм OCaml. Я думаю, що з точки зору спроби довести правильність існуючої програми OCaml, CFML був би кращим вибором.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.