Введение

Подраздел автоматического рассуждения и математической логики. Автоматическое доказательство теорем (также известное как АТП или автоматическая дедукция) — это подраздел автоматического рассуждения и математической логики, занимающийся доказательством математических теорем с помощью компьютерных программ. Автоматизированное рассуждение над математическими доказательствами послужило важным стимулом для развития компьютерной науки.

Логические основы

В то время как корни формализованной логики восходят к Аристотелю, конец XIX и начало XX века ознаменовались развитием современной логики и формализованной математики. "Begriffsschrift" Фреге (1879) представил как полный исчисление высказываний, так и то, что по сути является современной предикатной логикой. Его "Основы арифметики", опубликованные в 1884 году, выразили (части) математики на формальном языке логики. Этот подход был продолжен Расселом и Уайтхедом в их влиятельной работе "Principia Mathematica", впервые опубликованной в 1910–1913 годах, и с пересмотренным вторым изданием в 1927 году. Рассел и Уайтхед полагали, что они могут вывести всю математическую истину, используя аксиомы и правила вывода формальной логики, тем самым, в принципе, открывая возможность автоматизации этого процесса. В 1920 году Торальф Сколем упростил предыдущий результат Леопольда Лёвенхайма, что привело к теореме Лёвенхайма — Сколема, а в 1930 году — к понятию вселенной Гербранда и интерпретации Гербранда, которые позволили свести (не)выполнимость формул первого порядка (и, следовательно, истинность теоремы) к (потенциально бесконечному числу) задач выполнимости высказываний. В 1929 году Мойзеш Пресбургер доказал, что теория первого порядка натуральных чисел с операциями сложения и равенства (ныне называемая арифметикой Пресбургера в его честь) является разрешимой и предоставил алгоритм для определения истинности или ложности любого утверждения в этом языке. Однако вскоре после этого положительного результата Курт Гёдель опубликовал работу "О формально неразрешимых предложениях Principia Mathematica и связанных с ними систем" (1931), показав, что в любой достаточно сильной аксиоматической системе существуют истинные утверждения, которые невозможно доказать в рамках этой системы. Эта тема получила дальнейшее развитие в 1930-х годах Алонзо Черчем и Аланом Тьюрингом, которые, с одной стороны, дали два независимых, но эквивалентных определения вычислимости, а с другой — привели конкретные примеры неразрешимых задач.

Первые реализации

Вскоре после Второй мировой войны появились первые компьютеры общего назначения. В 1954 году Мартин Дэвис запрограммировал алгоритм Пресбургера для вакуумного компьютера JOHNNIAC в Институте перспективных исследований в Принстоне, штат Нью-Джерси. По словам Дэвиса, "его величайшим достижением было доказательство того, что сумма двух чётных чисел чётна". Более амбициозным был "Теоретик логики" 1956 года – система дедукции для пропозициональной логики "Principia Mathematica", разработанная Алленом Ньюэллом, Гербертом А. Саймоном и Дж. К. Шоу. Также работая на JOHNNIAC, "Теоретик логики" конструировал доказательства, исходя из небольшого набора аксиом и трёх правил дедукции: modus ponens, подстановка переменных и замена формул их определениями. Система использовала эвристическое управление и сумела доказать 38 из первых 52 теорем "Principia".

Решаемость проблемы

В зависимости от лежащей в основе логики, сложность определения истинности формулы варьируется от тривиальной до неразрешимой. Для наиболее распространенного случая логики высказываний, проблема разрешима, но является co NP-полной, и поэтому для общих задач доказательства, как считается, существуют только алгоритмы с экспоненциальным временем работы. Для исчисления предикатов первого порядка теорема о полноте Гёделя утверждает, что теоремы (доказуемые утверждения) точно соответствуют семантически истинным корректно сформированным формулам, таким образом, истинные формулы вычислимо перечислимы: при неограниченных ресурсах любая истинная формула в конечном итоге может быть доказана. Однако неистинные формулы (те, которые не вытекают из данной теории) не всегда могут быть распознаны. Вышесказанное применимо к теориям первого порядка, таким как арифметика Пеано. Однако для конкретной модели, которая может быть описана теорией первого порядка, некоторые утверждения могут быть истинными, но неразрешимыми в теории, используемой для описания этой модели. Например, согласно теореме о неполноте Гёделя, мы знаем, что любая непротиворечивая теория, аксиомы которой верны для натуральных чисел, не может доказать истинность всех утверждений первого порядка, истинных для натуральных чисел, даже если список аксиом допускает бесконечную перечислимость. Следовательно, автоматический теорематизатор не сможет завершить поиск доказательства, когда исследуемое утверждение неразрешимо в используемой теории, даже если оно истинно в интересующей модели. Несмотря на это теоретическое ограничение, на практике теорематизаторы могут решать многие сложные задачи, даже в моделях, которые не полностью описываются какой-либо теорией первого порядка (например, целые числа).

Связанные проблемы

Более простая, но связанная задача — верификация доказательств, где существующее доказательство теоремы сертифицируется как корректное. Для этого обычно требуется, чтобы каждый отдельный шаг доказательства мог быть проверен примитивно рекурсивной функцией или программой, и, следовательно, задача всегда разрешима. Поскольку доказательства, генерируемые автоматическими доказывателями теорем, как правило, очень велики, проблема сжатия доказательств является критически важной, и были разработаны различные методы, направленные на уменьшение вывода доказывателя, а следовательно, на повышение его понятности и проверяемости. Системы поддержки доказательств требуют, чтобы пользователь предоставлял системе подсказки. В зависимости от степени автоматизации, доказыватель может быть сведен к проверяющему доказательства, где пользователь предоставляет доказательство в формальном виде, или значительные этапы доказательства могут выполняться автоматически. Интерактивные доказыватели используются для решения различных задач, но даже полностью автоматические системы доказали ряд интересных и сложных теорем, включая, по крайней мере, одну, которая долгое время ускользала от математиков — гипотезу Роббинса. Однако эти успехи носят эпизодический характер, и работа над сложными задачами обычно требует опытного пользователя. Иногда проводится различие между доказательством теорем и другими методами, где процесс считается доказательством теоремы, если он состоит из традиционного доказательства, начинающегося с аксиом и производящего новые шаги вывода с использованием правил вывода. К другим методам относится проверка моделей, которая в простейшем случае включает в себя перебор большого количества возможных состояний (хотя фактическая реализация средств проверки моделей требует значительной изобретательности и не сводится просто к полному перебору). Существуют гибридные системы доказательства теорем, использующие проверку моделей в качестве правила вывода. Существуют также программы, написанные для доказательства конкретной теоремы, с (обычно неформальным) доказательством того, что если программа завершается с определенным результатом, то теорема верна. Хорошим примером является машинное доказательство теоремы о четырех красках, которое вызвало много споров как первое заявленное математическое доказательство, которое было практически невозможно проверить людьми из-за огромного объема вычислений программы (такие доказательства называются недоказуемыми). Другой пример доказательства с помощью программы — доказательство того, что в игру "Крестики-нолики" всегда может выиграть первый игрок.

Приложения

Коммерческое использование автоматического доказательства теорем сосредоточено главным образом в области проектирования и верификации интегральных схем. После обнаружения ошибки Pentium FDIV, сложные блоки вычислений с плавающей точкой в современных микропроцессорах разрабатываются с повышенным вниманием к деталям. Компании AMD, Intel и другие используют автоматическое доказательство теорем для верификации корректности реализации операций деления и других операций в своих процессорах. Среди других применений доказателей теорем – синтез программ, то есть создание программ, удовлетворяющих формальным спецификациям. Автоматические доказатели теорем были интегрированы с системами поддержки доказательств, включая Isabelle/HOL.

Доказательство теоремы первого порядка

В конце 1960-х годов агентства, финансирующие исследования в области автоматического вывода, стали подчеркивать необходимость практических приложений. Одной из первых перспективных областей стала верификация программ, в которой теоремы первого порядка использовались для решения задачи проверки корректности компьютерных программ, написанных на языках, таких как Паскаль, Ада и другие. Среди ранних систем верификации программ выделялась Stanford Pascal Verifier, разработанная Дэвидом Лакхэмом в Стэнфордском университете. Она была основана на методе резолюции Стэнфорда, также разработанном в Стэнфорде с использованием принципа резолюции Джона Алана Робинсона. Это была первая система автоматического вывода, продемонстрировавшая способность решать математические задачи, опубликованные в «Уведомлениях Американского математического общества» до официальной публикации решений. Доказательство теорем первого порядка – одно из наиболее развитых направлений автоматического доказательства теорем. Эта логика достаточно выразительна, чтобы позволить формальное описание произвольных задач, часто естественным и интуитивно понятным образом. С другой стороны, она остаётся полуразрешимой, и был разработан ряд корректных и полных исчислений, позволяющих создавать полностью автоматизированные системы. Более выразительные логики, такие как логики высшего порядка, позволяют удобно описывать более широкий круг задач, чем логика первого порядка, однако доказательство теорем для этих логик развито в меньшей степени.

Отношения с ТММ

Существует значительное пересечение между автоматическими доказателями теорем первого порядка и SMT-решателями. Как правило, автоматические доказатели теорем ориентированы на поддержку полной логики первого порядка с кванторами, в то время как SMT-решатели больше ориентированы на поддержку различных теорий (интерпретируемых предикатных символов). Доказатели теорем первого порядка особенно эффективны при решении задач с большим количеством кванторов, а SMT-решатели хорошо справляются с крупными задачами, не содержащими кванторов. Граница между ними достаточно размыта, поэтому некоторые доказатели теорем первого порядка участвуют в SMT COMP, а некоторые SMT-решатели – в CASC.

Сравнительные показатели, конкурсы и источники

Качество реализованных систем улучшилось благодаря наличию обширной библиотеки стандартных примеров – библиотеки «Тысячи проблем для проверяющих теоремы» (Thousands of Problems for Theorem Provers – TPTP), а также ежегодному конкурсу CADE ATP System Competition (CASC), соревнованию систем первого порядка по многим важным классам задач логики первого порядка. Ниже перечислены некоторые важные системы (все они выиграли как минимум один дивизион конкурса CASC). E – высокопроизводительный решатель для полной логики первого порядка, но построенный на чисто эквациональном исчислении, изначально разработанный в группе автоматизированного рассуждения Технического университета Мюнхена под руководством Вольфганга Бибеля, а ныне – в Баден-Вюртембергском кооперативном государственном университете в Штутгарте. Otter, разработанный в Аргоннской национальной лаборатории, основан на разрешении первого порядка и парамодуляции. Впоследствии Otter был заменен Prover9, который используется в связке с Mace4. SETHEO – высокопроизводительная система, основанная на исчислении моделирования, ориентированном на цель, первоначально разработанная командой под руководством Вольфганга Бибеля. E и SETHEO были объединены (вместе с другими системами) в композитный решатель теорем E SETHEO. Vampire был первоначально разработан и реализован в Манчестерском университете Андреем Воронковым и Кристофом Ходером. В настоящее время его разрабатывает растущая международная команда. Он регулярно выигрывал дивизион FOF (среди прочих) на конкурсе CADE ATP System Competition начиная с 2001 года. Waldmeister – специализированная система для унитарной эквациональной логики первого порядка, разработанная Арнимом Бухом и Томасом Хилленбрандом. Он выиграл дивизион CASC UEQ в течение четырнадцати лет подряд (1997–2010). SPASS – решатель теорем логики первого порядка с равенством, разработанный исследовательской группой «Автоматизация логики» Института компьютерных наук имени Макса Планка. Музей решателей теорем – это инициатива по сохранению исходного кода систем проверки теорем для последующего анализа, поскольку они представляют собой важные культурные и научные артефакты. В нем хранятся исходные коды многих из вышеупомянутых систем.

Программные системы

+ Сравнение Имя Тип лицензии Веб-сервис Библиотека Автономная Последнее обновление ACL2 3-clause BSD ✔ 2019 05 Prover9/Otter Public Domain ✔ 2009 Jape GPLv2 ✔ ✔ 2015 05 15 PVS GPLv2 ✔ 2013 01 14 EQP ✔ 2009 05 PhoX ✔ 2017 09 28 E GPL ✔ 2017 07 04 SNARK Mozilla Public License 1.1 ✔ 2012 Vampire Vampire License ✔ ✔ 2017 12 14 Система доказательства теорем (TPS) Соглашение о распространении TPS ✔ 2012 02 04 SPASS FreeBSD license ✔ ✔ ✔ 2005 11 IsaPlanner GPL ✔ ✔ 2007 KeY GPL ✔ ✔ ✔ 2017 10 11 Z3 Theorem Prover MIT License ✔ ✔ ✔ 2019