Инструмент интерактивного доказательства теорем

Интерактивная сессия в CoqIDE, на экране — текст доказательства слева и состояние доказательства справа.

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

Сравнение систем

Название Последняя версия Разработчик(и) Язык реализации Возможности
Логика высшего порядка Зависимые типы Маленькое ядро Автоматизация доказательств Proof by reflection Кодогенерация
ACL2 8.6 Matt Kaufmann и J Strother Moore Common Lisp Нет нетипизированный Нет Да Да[1] генерирует исполняемый код
Agda 2.6.2.2 Ulf Norell, Nils Anders Danielsson, и Andreas Abel (Технический университет Чалмерса и Гётеборгский университет) Haskell Да Да Да Нет Частично генерирует исполняемый код
Albatross 0.4.4 Helmut Brandl OCaml Да Нет Да Да Неизвестно еще не реализовано
Rocq (ранее известный как Coq) 9.0.0 INRIA OCaml Да Да Да Да Да Да
F* 0.9.6.0 Microsoft Research и INRIA F* Да Да Нет Да Да[2] Да
HOL Light в репозитории John Harrison OCaml Да Нет Да Да Нет Нет
HOL4 Kananaskis-12 (или в репозитории) Michael Norrish, Konrad Slind, and others Standard ML Да Нет Да Да Нет Да
Idris 2 0.6.0 Edwin Brady Idris Да Да Да Неизвестно Частично Да
Isabelle Isabelle2021-1 Larry Paulson (Cambridge), Tobias Nipkow (München) and Makarius Wenzel Standard ML, Scala Да Нет Да Да Да Да
Lean 4.7.0[3] Leonardo de Moura Microsoft Research C++ Да Да Да Да Да Да
LEGO (не связан с компанией LEGO) 1.3.1 Randy Pollack (Edinburgh) Standard ML Да Да Да Нет Нет Нет
Mizar 8.1.05 Białystok University Free Pascal Частично Да Нет Нет Нет Нет
NuPRL 5 Cornell University Common Lisp Да Да Да Да Неизвестно Да
PVS 6.0 SRI International Common Lisp Да Да Нет Да Нет Неизвестно
Twelf 1.7.1 Frank Pfenning and Carsten Schürmann Standard ML Да Да Неизвестно Нет Нет Неизвестно
  • ACL2— язык программирования, логическая теория первого порядка и средство доказательства теорем (как с интерактивным, так и с автоматическим режимами) в традиции Бойера–Мура.
  • Rocq (ранее известный как Coq) — позволяет выражать математические утверждения, механически проверяет доказательства этих утверждений, помогает находить формальные доказательства и извлекает сертифицированную программу из конструктивного доказательства ее формальной спецификации.
  • HOL theorem prover – семейство программных продуктов, являющихся, в конечном итоге, производными от инструмента доказательства теорем LCF. Во всех этих системах логическим ядром является библиотека встроенного в них языка программирования. Теоремы представляют собой новые элементы языка и вводятся с использованием «стратегий», которые гарантируют логическую корректность. Составление стратегии дает пользователям возможность создавать важные доказательства при относительно небольшом количестве взаимодействий с системой. К этой группе систем относятся:
    • HOL4 — единственная в настоящее время поддерживаемая и развиваемая система, происходящая от системы HOL88, которая была кульминацией первоначальных усилий по реализации HOL, возглавляемых Майком Гордоном . HOL88 включала собственную реализацию ML , которая, в свою очередь, была реализована поверх Common Lisp . Все системы, последовавшие за HOL88 (HOL90, hol98 и HOL4), были реализованы на Standard ML ; в то время как hol98 связан с Moscow ML , HOL4 может быть построен либо с Moscow ML, либо с Poly/ML . Все они поставляются с большими библиотеками кода доказательства теорем, которые реализуют дополнительную автоматизацию поверх очень простого основного кода.
    • HOL Light — экспериментальная «минималистская» версия HOL, которая с тех пор выросла в другой основной вариант HOL; ее логические основы остаются необычайно простыми. HOL Light, изначально реализованный в Caml Light , теперь использует OCaml.
    • ProofPower — набор из шести инструментов, разработанных для предоставления специальной поддержки, основанной на HOL, для работы с нотацией Z для формальной спецификации. Инструмент PPDaz, поддерживающий спецификацию и проверку программ, написанных на подмножестве Ada, ранее поставлялся только по проприетарной лицензии.
    • HOL Zero — минималистская реализация, ориентированная на надежность.
    • Candle — проверенная реализация HOL Light на основе CakeML.
  • IMPS: An interactive mathematical proof system интерактивная система математических доказательств.[4]
  • Isabelle — интерактивный доказатель теорем, преемник HOL. Основная кодовая база лицензирована BSD, но дистрибутив Isabelle объединяет множество дополнительных инструментов с различными лицензиями.
  • Jape – основан на Java.
  • Lean
  • LEGO (не связан с компанией LEGO)
  • Matita – легкая система, основанная на исчислении индуктивных построений.
  • MINLOG – Помощник доказательства, основанный на минимальной логике первого порядка.
  • Nqthm
  • Mizar – помощник в доказательстве, основанный на логике первого порядка, в стиле естественной дедукции и теории множеств Тарского–Гротендика .
  • PhoX – помощник по доказательству, основанный на логике высшего порядка, который является расширяемым.
  • PVS – язык и система доказательств, основанные на логике высшего порядка.
  • TPS and ETPS – интерактивные средства доказательства теорем, также основанные на простом типизированном лямбда-исчислении, но основанные на независимой формулировке логической теории и независимой реализации.

Пользовательский интерфейс

Популярным интерфейсом для инструментов интерактивного доказательства теорем является опирающийся на Emacs Proof General, разработанный в Эдинбургском университете. Coq включает в себя CoqIDE, который написан на OCaml/Gtk. В состав Isabelle входит Isabelle/jEdit, основанный на jEdit и инфраструктуре Isabelle/Scala для документо-ориентированной обработки доказательств. Для Visual Studio Code так же существует расширение, предназначенное для работы с Isabelle. Оно было разработано Makarius Wenzel[5].

См. также

  • Автоматическое доказательство
  • Доказательные вычисления
  • QED manifesto
  • Формальная верификация
  • Задача выполнимости формул в теориях
  • Metamath — язык, предназначенный для разработки формальных математических утверждений, в экосистему которого входит инструмент интерактивного доказательства теорем и несколько баз данных с тысячами записанных и доказанных теорем.

Примечания

  1. Hunt, Warren; Matt Kaufmann; Robert Bellarmine Krug; J Moore; Eric W. Smith. Meta Reasoning in ACL2 (англ.) // Springer Lecture Notes in Computer Science : journal. — 2005. — Vol. 3603. — P. 163—178. Архивировано 1 декабря 2021 года.
  2. Поиск «proofs by reflection»: arXiv:1803.06547
  3. Lean Theorem Prover Releases page. GitHub. Архивировано 5 сентября 2020 года.
  4. Farmer, William M.; Guttman, Joshua D.; Thayer, F. Javier. IMPS: An interactive mathematical proof system (англ.) // Journal of Automated Reasoning. — 1993. — Vol. 11, no. 2. — P. 213—248. — doi:10.1007/BF00881906. Архивировано 4 июня 2020 года.
  5. Wenzel, Makarius. Isabelle. Дата обращения: 31 мая 2020. Архивировано 4 июня 2020 года.

Литература

Ссылки

Каталоги