Я ищу вводную книгу по математической логике, в которой также обсуждается реализация ее логики в помощнике по проверке. Мне кажется, это был бы отличный способ изучить математическую логику, поскольку многие понятия стали бы очень ясными и конкретными при реализации в компьютерной программе. Но такой книги я еще не видел.
Желательно, чтобы книга представила язык помощника по корректуре, не предполагая никаких предварительных знаний, и побудила читателя использовать его в различных местах.
РЕДАКТИРОВАТЬ
Мне нравятся ответы, опубликованные до сих пор, и я хочу оставить это открытым на некоторое время, чтобы собрать другие рекомендации в одном месте. Однако, открыв его, я также нашел следующие отличные ресурсы, связанные с этим вопросом, а именно этот список ресурсов и эту книгу/сборник заметок Джереми Авигада. Эти ресурсы кажутся теми, что я искал, и могут быть полезны другим, кто наткнется на этот пост.
РЕДАКТИРОВАТЬ 2
Одна функция, которую я действительно хотел бы видеть, которую я до сих пор не видел в предложениях, — это книга, которая также формализует свою металогику в помощнике по проверке. Например, мне бы понравилась книга, которая доказывает (например) теорему о надежности и показывает, как такое доказательство можно реализовать с помощью помощника по доказательству.
С другой стороны, я был бы удивлен, если бы такой ресурс существовал, поскольку ни в одной книге по математической логике (из тех, что я видел) даже не упоминается идея формализации металогики.
Я настоятельно рекомендую «Руководство по практической логике и автоматизированному мышлению» Джона Харрисона . Примеры программирования в большей степени связаны с тем, как реализовать помощники по проверке и процедуры принятия решений, а не с тем, как использовать помощник по проверке, но я думаю, что они отвечают вашему желанию в реализации, которая разъясняет ключевые концепции. Все примеры даны на языке функционального программирования OCaml .
Относительно второго редактирования: я думаю, что в большинстве текстов по математической логике подразумевается, что предмет может быть формализован в подходящей системе фундамента, такой как ZF. В литературе по математической логике это становится важным и становится явным в работе над независимостью . В мире помощников по доказательствам самоформализация с целью повышения уверенности и понимания вызывает интерес в течение многих лет. Например, см. этот документ о самопроверке HOL и ссылки в нем. Я думаю, что общие принципы формализованной металогики, вероятно, более поучительны, чем мелкие детали формализации.
Попробуйте фундаментальные методы доказательства в информатике. Он использует Athena в качестве помощника по доказательству. Он учит как логике, так и языку.
Если вы найдете этот сложный здесь простым — https://staff.washington.edu/jon/flip/www/userguide-nd.html Он работает с Python 2.7.
Книги, имеющие сопровождающего помощника по проверке логики, — это один из способов взглянуть на это, но это также работает и наоборот: большинство помощников по проверке реализуют некоторую конкретную (обычно конструктивную) логику, и поэтому книги о помощнике по проверке — это уже книги об этой логике. .
Вот некоторые ресурсы о Coq :
Серия «Основы программного обеспечения» [Pierce] В частности, книга 1 знакомит с конструктивной логикой внутри Coq.
Сертифицированное программирование с зависимыми типами [Chlipala]
Моделирование и доказательство в теории вычислительных типов с использованием Coq [Смолка] — это все еще развивающийся черновик книги, который является основой лекции и имеет сопутствующие файлы Coq на github . Это говорит о помощнике по доказательству менее прямым образом.
На сайте Lean Community есть страница с рекомендуемыми учебными ресурсами .
И давайте не будем забывать о HoTT:
Дэниел Шеплер
УиллГ
Дэн Кристенсен
Леро
пользователь 21820
Гай Кодер