Для підтвердження правильності я шукаю корисне поняття еквівалентності програми для систем чистого типу (BTS) Barendregt; цього не вистачає для досить специфічних систем. Моя мета - просто використовувати поняття, а не досліджувати його заради себе.
Це поняття повинно бути " розширеним " - зокрема, щоб довести, що , повинно бути достатньо, щоб довести, що для всіх значень відповідного типу.t 1v
Денотаційна еквівалентність
Денотаційна еквівалентність легко задовольняє всі правильні леми, але денотаційна семантика для довільних ПТС здається досить складною - це здається важким вже для Системи F.
Контекстуальна / спостережна еквівалентність
Очевидною альтернативою є різні форми контекстуальної еквівалентності (два терміни є рівнозначними, якщо жоден основний контекст не може їх розрізнити), але його визначення не одразу застосоване; різні леми не тривіально доводити. Чи доведено їх для ПТС? Як альтернатива, чи теорія буде "очевидним продовженням", чи є підстави вважати, що теорія буде суттєво відрізнятися?
EDIT: Я не сказав, що важко вище.
Легка частина: визначення
Визначення еквівалентності не надто важке, і це визначення з'являється у багатьох працях (починаючи принаймні з дослідження Плоткіна 1975 р. Про ПКФ, якщо не раніше - джерелом може бути кандидатська дисертація Морріса з 1968 р.). Ми якщо для всіх наземних контекстів , - тобто і дають однаковий результат . Тут у вас є кілька варіантів з безліччю альтернатив: Наприклад, сильно нормалізуючою мовою, якщо у вас є основний тип натуралів, ви можете сказати, що наземні контексти - це ті, які повертають природних речовин, і тоді означає, що і C C [ t 1 ] ≃ C [ t 2 ] C [ t 1 ] C [ t 2 ] a ≃ b a bоцінити до тієї ж кількості. При невиконанні для розумних мов досить використовувати "X закінчується" як спостереження, оскільки якщо дві програми рівноцінні при спостереженні за припиненням, вони також є рівнозначними при спостереженні за результатом.
Важка частина: докази
Однак ці документи часто не пояснюють, наскільки важко реально використовувати це визначення. Всі наведені нижче посилання показують, як вирішити цю проблему, але необхідна теорія важче, ніж хтось думає. Як ми можемо довести, що ? Чи насправді ми аналізуємо та індукуємо ситуацію у контекстах? Ти не хочеш цього робити.
Як зазначає Мартін Бергер, ви хочете використовувати замість цього або бісимуляцію (як це робив Піттс), або відношення логічної еквівалентності (що Гарпер просто називає "логічною еквівалентністю").
Нарешті, як ви докажете розширення, як визначено вище?
Гарпер вирішує ці питання на 10 сторінках для System T, завдяки значній розумності та логічним відносинам. Пітс займає більше. Деякі мови ще складніші.
Як з цим боротися
Насправді я спокушаюсь зробити свої докази умовно вигаданою теорією еквівалентності для ПТС, але фактичні теорії потребують нетривіальних аргументів, тому я не впевнений, наскільки вірогідна така гіпотеза.
Мені відомо (хоча і не докладно) наступних робіт:
- Ендрю Піттс (наприклад, в ATTAPL для розширеної системи F, і в кількох статтях, таких як 58-сторінкова "Операційно-теоретична рівновага програм").
- Практичні основи мов програмування (глави 47-48), натхненні Піттом (але стверджує, що вони мають більш прості докази).
- Логічне вивчення еквівалентності програми . Я не можу знайти конспект з англійської мови, але, схоже, витрачаю багато зусиль на побічні ефекти (посилання), що здається ортогональним ускладненням.