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

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

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

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

НазваниеПоследняя версияРазработчик(и)Язык реализацииВозможности
Логика высшего порядкаЗависимые типыМаленькое ядроАвтоматизация доказательствProof by reflectionКодогенерация
ACL28.6Matt Kaufmann и J Strother MooreCommon LispНетнетипизированныйНетДаДа[1]генерирует исполняемый код
Agda2.6.2.2 Ulf Norell, Nils Anders Danielsson, и Andreas Abel (Технический университет Чалмерса и Гётеборгский университет)HaskellДаДаДаНетЧастичногенерирует исполняемый код
Albatross0.4.4 Helmut BrandlOCamlДаНетДаДаНеизвестноеще не реализовано
Rocq (ранее известный как Coq)9.0.0INRIAOCamlДаДаДаДаДаДа
F*0.9.6.0Microsoft Research и INRIAF*ДаДаНетДаДа[2]Да
HOL Lightв репозиторииJohn HarrisonOCamlДаНетДаДаНетНет
HOL4Kananaskis-12 (или в репозитории)Michael Norrish, Konrad Slind, and othersStandard MLДаНетДаДаНетДа
Idris2 0.6.0Edwin BradyIdrisДаДаДаНеизвестноЧастичноДа
IsabelleIsabelle2021-1Larry Paulson (Cambridge), Tobias Nipkow (München) and Makarius WenzelStandard ML, ScalaДаНетДаДаДаДа
Lean 4.7.0[3]Leonardo de Moura Microsoft ResearchC++ДаДаДаДаДаДа
LEGO (не связан с компанией LEGO)1.3.1Randy Pollack (Edinburgh)Standard MLДаДаДаНетНетНет
Mizar8.1.05Białystok UniversityFree PascalЧастичноДаНетНетНетНет
NuPRL5Cornell UniversityCommon LispДаДаДаДаНеизвестноДа
PVS6.0SRI InternationalCommon LispДаДаНетДаНетНеизвестно
Twelf1.7.1Frank Pfenning and Carsten SchürmannStandard 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].

См. также

Примечания

  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 года.

Литература

Ссылки

Каталоги