Докази коректності компілятора


20

Я шукаю матеріал підручника, який охоплює докази коректності компілятора, бажано з використанням денотаційних методів, на рівні студента початкового класу.

Або ви знаєте кілька простих прикладів компілятора, які я міг би використати для ілюстрації проблем? (Перший приклад, який мені трапився, - це перекладач з виразів на інфікс на постфікс. Але не вдалося показати нічого цікавого, окрім як зробити індукцію на синтаксис.)

Відповіді:


10

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

Прості докази коректності реляції для статичних аналізів та перетворень програми , Нік Бентон. 2004 рік.

Ми показуємо, як деякі класичні статичні аналізи імперативних програм та оптимізуючі перетворення, які вони дозволяють, можуть бути виражені та доведені правильними за допомогою елементарних логічних та денотаційних методів . Основними інгредієнтами є інтерпретація програмних властивостей як відносин, а не предикатів, і усвідомлення того, що хоча багато програмних аналізів традиційно формулюються в дуже інтенсивному вираженні, пов'язані перетворення насправді забезпечуються більш ліберальними властивостями розширення.

Ці папери також можуть вас зацікавити. Вони мені дуже допомогли!

  1. Доведення коректності оптимізацій компілятора тимчасовими логіками , Девідом Лейсі, Нілом Д. Джонсом, Еріком Ван Віком, Карлом Крістіаном Фредеріксен. Я б подумав, що в контексті оптимізацій компілятора було бисимуляції більше матеріалів, що використовують бісимуляцію. Якщо ваша мета - справді денотаційні методи, ви, ймовірно, можете кодувати ці докази, використовуючи характеристики бісимуляції.
  2. Створення оптимізацій компілятора з доказів , Росса Тейта, Майкла Степпа та Соріна Лернера. Включає категоричну теоретичну формалізацію методу їх доказування.
  3. Правильне доведення оптимізацій за допомогою параметризованої еквівалентності програми , Судіпта Кунду, Захарі Татлок та Соріна Лернера. Ідіть туди, якщо вам подобаються логічні стосунки.
  4. Формально перевірений компілятор бек- ендо Xavier Leroy.


7

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


1
Це дуже хороший папір.
Ніл Крішнасвамі


7

Можливо , не найпростіший приклад, але Xavier Leroy зробив багато роботи в цій галузі, наприклад, формально перевіреного C компілятором . Він виступив із презентацією літньої школи, використовуючи невелику імперативну мову ІМП, що є доступним вступом до більш досконалої роботи.

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