Введение

Автоматизированный теоремопроверщик 1970-х годов. Логика для вычислимых функций (LCF) — это интерактивный автоматизированный теоремопроверщик, разработанный в Стэнфорде и Эдинбурге Робином Мильнером и его коллегами в начале 1970-х годов, основанный на теоретических принципах логики вычислимых функций, ранее предложенных Даной Скоттом. Работа над системой LCF представила язык программирования общего назначения ML, позволяющий пользователям создавать тактики доказательства теорем и поддерживающий алгебраические типы данных, параметрический полиморфизм, абстрактные типы данных и обработку исключений.

Основная идея

Теоремы в системе являются элементами специального абстрактного типа данных "теорема". Общий механизм абстрактных типов данных ML гарантирует, что теоремы выводятся исключительно с использованием правил вывода, заданных операциями этого абстрактного типа. Пользователи могут создавать произвольно сложные программы на ML для вычисления теорем; истинность теорем не зависит от сложности этих программ, а вытекает из корректности реализации абстрактного типа данных и правильности работы ML-компилятора.

Преимущества

Подход LCF обеспечивает сопоставимую степень доверия к системам, генерирующим явные сертификаты доказательств, но без необходимости хранить объекты доказательств в памяти. Тип данных "Теорема" может быть легко реализован с возможностью опционального хранения объектов доказательств, в зависимости от конфигурации времени выполнения системы, что делает его обобщением базового подхода к генерации доказательств. Решение использовать язык программирования общего назначения для разработки теорем означает, что в зависимости от сложности написанных программ, на том же языке можно разрабатывать пошаговые доказательства, процедуры принятия решений или автоматические доказатели теорем.

Доверенная вычислительная база

Реализация базового ML-компилятора расширяет доверенную вычислительную базу. Работа над CakeML привела к созданию формально верифицированного ML-компилятора, что ослабляет некоторые из этих опасений.

Эффективность и сложность процедур доказывания

Доказательство теорем часто выигрывает от использования процедур принятия решений и алгоритмов доказательства теорем, корректность которых была тщательно проанализирована. Прямой способ реализации этих процедур в рамках подхода LCF требует, чтобы они всегда выводили результаты из аксиом, лемм и правил вывода системы, а не вычисляли результат напрямую. Потенциально более эффективным подходом является использование рефлексии для доказательства того, что функция, оперирующая формулами, всегда выдает верный результат.

Влияния

Среди последующих реализаций — Cambridge LCF. Более поздние системы упростили логику, перейдя к использованию полных вместо частичных функций, что привело к созданию HOL, HOL Light и системы автоматизированного доказательства Isabelle, поддерживающей различные логики. По состоянию на 2019 год система Isabelle по-прежнему содержит реализацию логики LCF, Isabelle/LCF.