Нещодавно я намагався реалізувати Седіл-Коре Аарона , мінімалістичну мову програмування, здатну доводити математичні теореми про власні умови. Я також довів індукцію для кодованих λ типів даних на ньому, завдяки чому стало зрозуміліше, чому його розширення будуть необхідними.
Більше того, я все ще залишаюся цікавим, звідки взялися ці розширення. Чому вони такі, якими вони є? Що їх виправдовує? Я знаю, наприклад, що деякі розширення, такі як рекурсія, руйнують мову як систему підтвердження. Якби я вирішив також поширити CoC разом з іншими примітивами, як би я це виправдав? Я розумію, доказ нормалізації необхідний, але це не підтверджує, що ці примітиви "мають сенс".
Коротше кажучи, що конкретно що кваліфікує мову (та її тип-систему) як систему, здатну доводити теореми про власні терміни?