Одне, що, на мою думку, вам буде цікавим, це те, що термін "доказ теореми" сильно змінюється залежно від того, в якому полі ви знаходитесь. Хоча вони - в рефераті - дещо пов'язані, практичні теореми, що підтверджують (як, наприклад, ви див., докладно викладений у Посібнику з автоматизованого міркування) має менше спільного з Кок або Ізабель, ніж ви могли б подумати.
Коли я вперше мав намір дізнатися про теорему, що підтверджує пов'язані речі, першою книгою, яку я прочитав (хоча зараз це зовсім датовано), була відмінна логіка першого порядку Мелвіна Фіттінга та доведення автоматизованих теорем. Ця книга була справді чудовою, яка висвітлювала типи тем, які ви побачите, що стосуються логіки нижчого порядку, де ви насправді можете отримати неабияку автоматизацію. Таку логіку, яку ви вивчаєте, слід диктувати тим, про що ви хочете міркувати, а не стільки теоремою, що доводить заради неї. Наприклад, хоча логіка першого порядку дає вам неабияку здатність до виразності та міркувань, більшість спільнот мов програмування (де я закінчилася в ці дні) відійшли від старшої школи доведення теорем і перевірки моделі (які входять у відро речей, які є більш рішучими, але менш виразними).
Не розумійте це, однак, що такі речі, як міркування першого порядку та перевірка моделі, не були надзвичайно корисними на практиці. Вони були! Ви можете подивитися на ACL2 як на приклад доказово побудованої вершини логіки першого порядку, яка отримала надзвичайний успіх у промисловій царині. Поряд з цим, також було досягнуто дивовижної розробки у вирішенні SMT. Сучасні SMT вирішувачі побудовані на основі дуже потужних SAT-рішувачів (в основному за допомогою відкриттів протягом останніх двадцяти років для вдосконалення DPLL), і вони побачили велику користь у таких речах, як символічне виконання.
Однак, як я вже говорив, хоча традиційніший біт «доказ теореми» - це весело, є ще багато чому навчитися. Навчання Coq - наприклад, - мало стосується вивчення засобів автоматизації, які він дає вам, і має багато іншого спільного з вивченням теорії типів, на якій ґрунтується (предикативне числення коіндуктивних конструкцій). Якщо ви не звикли до конструктивної логіки, ізоморфізму каррі чи теорії типів, вам буде цікаво вивчати ці інструменти, але я навряд чи можу подумати, що вони занадто тісно пов'язані з речами, які ви бачите в першому томі цього посібника.
Тож вирішіть, що ви хочете зробити: перевірити моделі та теореми в логіці першого порядку, або використовуйте потужну теорію типів, щоб міркувати про правильність своїх програм (або теорем у конструктивній логіці). Якщо це перше, дізнайтеся про більш автоматизовані методи на основі відрахування, якщо це друге, дізнайтеся більше про Coq, HOL тощо. До речі, якщо ви хочете вивчити Coq, тоді як наведені вище посилання хороші, я думаю, що Є два справді основних посилання на вивчення Coq:
Книга про основи програмного забезпечення Бенджаміна Пірса (доктор Пірс - чудовий автор, і я рекомендую вам також переглянути його більш популярну "цегляну книгу", якщо ви ще цього не зробили).
Сертифіковане програмування з залежними типами (Адам Чліпала також пише добре, хоча його книги передбачають трохи більше зрілості та інтелекту, ніж, можливо, простіший вступ Пірса.)