Навчання автоматизованому доказуванню теореми


44

Я самостійно навчаюсь автоматизованому доказуванню теореми / вирішувачам SMT / кореспондентам і розміщую низку питань про цей процес, починаючи тут.

Зауважте, що ці теми не легко засвоюються без досвіду (математичної) логіки. Якщо у вас є проблеми з основними термінами, будь ласка, прочитайте їх, наприклад, « Логіка в комп'ютерних науках » М. Хат та М. Райана (зокрема, глави перше, друге та четверте) або Вступ до теорії математичної логіки та типів П. Ендрюс.
Короткий вступ у логіку вищого порядку (HOL) дивіться тут .

Я подивився на Кока і прочитав першу главу індукції Ізабелли серед інших; Види автоматизованих доказів теореми

Я знаю Пролог уже кілька десятиліть, і зараз я вивчаю F #, тому ML, O'Caml і LISP - це бонус. Хаскелл - інший звір.

У мене є такі книги

"Посібник з автоматизованих міркувань" під редакцією Алана Робінсона та Андрія Ворнькова

"Довідник з практичної логіки та автоматизованого міркування" Джона Харрісона

"Переписування термінів і все це" Франца Баадера та Тобіаса Ніпкова

  1. Які відмінності між Коком та Ізабеллою?

  2. Чи слід навчитися Ізабелі чи Кок, або обом?

  3. Чи є перевага навчитися спочатку Ізабель чи Кок?

Знайдіть серіал 'Наступне питання тут .


7
Важливо зазначити, що згадані вами інструменти - це не автоматизовані докази, а допоміжні помічники (хоча вони можуть довести легкі речі самостійно).
Рафаель

@DaveClarke Дублікат?
Рафаель

@Raphael: Так (за винятком того, що моя відповідь містить нові дані).
Дейв Кларк

@DaveClarke Як ви думаєте, ми повинні закрити цю і об'єднати їх?
Рафаель

@Raphael: Так. Я просто скопіював тут текст відповіді у свою відповідь на інше питання.
Дейв Кларк

Відповіді:


25

Мої переваги - Кок, але я думаю, що інші віддають перевагу Ізабель. Одне з дивних речей, які я знайшов про Ізабел, - це те, що є дворівневий синтаксис, де деякі ваші визначення повинні бути всередині подвійної цитати. У Кок немає такої дурниці.

Зрештою, найбільш підходящий для вас може залежати від того, що ви хочете довести. Обидві мови мають багато бібліотечної підтримки та активних спільнот, які роблять усілякі розробки та приклади теорій. Якщо одна мова забезпечує адекватну бібліотечну (чи іншу) підтримку для тих типів теорії, які ви хочете розвивати, я вибрав би цю мову.

Однією з стратегій є простий підручник на обох мовах та слідування за тією, яка відчуває себе найкраще. Наприклад,

Ось повідомлення в блозі, яке коротко порівнює два, хто в кінцевому рахунку віддає перевагу Ізабел.

Переконайтеся, що ви використовуєте належний IDE (наприклад, ProofGeneral ), а не виконайте дії в командному рядку.

Ще один спосіб потрапити в Coq - спробувати онлайн-книгу « Основи програмного забезпечення» Бенджаміна Пірса та ін. Він надає чудовий підручник з великою кількістю деталей. Основна увага приділяється семантиці мови програмування, але багато основ (і далі) доказів Coq і напівавтоматизованих теорем висвітлюються на цьому шляху.


4
ProofGeneral є приголомшливим, як тільки ви його приручили! Щодо синтаксису Ізабелли: iirc, матеріал у подвійній цитаті - це те, про що ви говорите, формули. Все інше - це контроль доказів. Я хоч і чітке розмежування було приємним, але подвійні лапки (і, як наслідок, відсутність підкреслення синтаксису всередині лапок), мабуть, не найкращий спосіб його втілення.
Рафаель

4
Ми створили вікі Isabelle / HOL минулого року для курсу; в ньому є кілька приємних оглядів, важко підійти інакше.
Рафаель

18

Одне, що, на мою думку, вам буде цікавим, це те, що термін "доказ теореми" сильно змінюється залежно від того, в якому полі ви знаходитесь. Хоча вони - в рефераті - дещо пов'язані, практичні теореми, що підтверджують (як, наприклад, ви див., докладно викладений у Посібнику з автоматизованого міркування) має менше спільного з Кок або Ізабель, ніж ви могли б подумати.

Коли я вперше мав намір дізнатися про теорему, що підтверджує пов'язані речі, першою книгою, яку я прочитав (хоча зараз це зовсім датовано), була відмінна логіка першого порядку Мелвіна Фіттінга та доведення автоматизованих теорем. Ця книга була справді чудовою, яка висвітлювала типи тем, які ви побачите, що стосуються логіки нижчого порядку, де ви насправді можете отримати неабияку автоматизацію. Таку логіку, яку ви вивчаєте, слід диктувати тим, про що ви хочете міркувати, а не стільки теоремою, що доводить заради неї. Наприклад, хоча логіка першого порядку дає вам неабияку здатність до виразності та міркувань, більшість спільнот мов програмування (де я закінчилася в ці дні) відійшли від старшої школи доведення теорем і перевірки моделі (які входять у відро речей, які є більш рішучими, але менш виразними).

Не розумійте це, однак, що такі речі, як міркування першого порядку та перевірка моделі, не були надзвичайно корисними на практиці. Вони були! Ви можете подивитися на ACL2 як на приклад доказово побудованої вершини логіки першого порядку, яка отримала надзвичайний успіх у промисловій царині. Поряд з цим, також було досягнуто дивовижної розробки у вирішенні SMT. Сучасні SMT вирішувачі побудовані на основі дуже потужних SAT-рішувачів (в основному за допомогою відкриттів протягом останніх двадцяти років для вдосконалення DPLL), і вони побачили велику користь у таких речах, як символічне виконання.

Однак, як я вже говорив, хоча традиційніший біт «доказ теореми» - це весело, є ще багато чому навчитися. Навчання Coq - наприклад, - мало стосується вивчення засобів автоматизації, які він дає вам, і має багато іншого спільного з вивченням теорії типів, на якій ґрунтується (предикативне числення коіндуктивних конструкцій). Якщо ви не звикли до конструктивної логіки, ізоморфізму каррі чи теорії типів, вам буде цікаво вивчати ці інструменти, але я навряд чи можу подумати, що вони занадто тісно пов'язані з речами, які ви бачите в першому томі цього посібника.

Тож вирішіть, що ви хочете зробити: перевірити моделі та теореми в логіці першого порядку, або використовуйте потужну теорію типів, щоб міркувати про правильність своїх програм (або теорем у конструктивній логіці). Якщо це перше, дізнайтеся про більш автоматизовані методи на основі відрахування, якщо це друге, дізнайтеся більше про Coq, HOL тощо. До речі, якщо ви хочете вивчити Coq, тоді як наведені вище посилання хороші, я думаю, що Є два справді основних посилання на вивчення Coq:

Книга про основи програмного забезпечення Бенджаміна Пірса (доктор Пірс - чудовий автор, і я рекомендую вам також переглянути його більш популярну "цегляну книгу", якщо ви ще цього не зробили).

Сертифіковане програмування з залежними типами (Адам Чліпала також пише добре, хоча його книги передбачають трохи більше зрілості та інтелекту, ніж, можливо, простіший вступ Пірса.)


15

Існує безліч систем для інтерактивного доведення теореми (ITP) - див. Також конференцію з таким ім'ям - Coq, Isabelle, HOLs, ACL2, PVS тощо.

Усі вони є досить складними для навчання, і кожен має свою специфічну культуру. Це як вивчення іноземної мови: дозвольте сказати, що ви вже знаєте англійську, а потім виберіть французьку, німецьку, італійську, іспанську, португальську. Усі вони так чи інакше пов'язані - це не китайці - але дуже мало людей керують цим усім одночасно. Тож вам слід спробувати скуштувати кожну з культур та спільнот, а потім взяти на себе зобов’язання.

Можливо, є також "вбивця", яка вам справді потрібна для вашої роботи.

Це також допомагає мати колег-експертів по одній із цих систем.

  • Які відмінності між Коком та Ізабеллою?

Обидва є нащадками системи LCF зі Стенфорда / Едінбурга / Кембриджа. У 1985 р. Г. Хует та Л. Полсон працювали разом над останньою версією Кембриджського LCF. Тоді розкол стався у напрямку Coc / CIC / COQ (нині Кок) у Франції та Ізабелли в Кембриджі та Мюнхені. Зауважте, що HOL4, HOL-Light, HOL-XYZ - інші споріднені нащадки LCF.

Більше 20 років тому розрізнення Кока проти Ізабелли було б здійснено за логічними основами: тут залежно введена конструктивна логіка, класична логіка, типова Simpl. Сьогодні на практику це мало дивно, оскільки на кожній офіційній системі додається все більше шарів, включаючи додаткові інструменти та бібліотеки.

  • Чи слід навчитися Ізабелі чи Кок, або обом?

Ви повинні дивитись на те й інше, і спробувати створити відчуття, якщо вам більше подобається Вино та сир, або Братвурст та квашена капуста. (Як один із хлопців, що стоять за Ізабель, але зараз у Франції, я здивований, скільки французів насправді люблять квашену капусту, коли вони перебувають приватно вдома, і ніхто не дивиться :-)

  • Чи є перевага навчитися спочатку Ізабель чи Кок?

Я не думаю, що так. Може виникнути небезпека, що ви застрягнете з тим, хто спробує перший, а не спробуєте другий, або ви занадто рано розчаруєтесь у першому та відмовитесь занадто рано. У будь-якому випадку вам знадобиться час та наполегливість, щоб стати продуктивними з будь-якою системою.

Оскільки Proof General як "IDE" вже згадувався: Proof General / Emacs був стандартним об'єднуючим інтерфейсом як для Coq, так і для Isabelle протягом багатьох років, але я ніколи не називав би це IDE. Також існує CoqIDE з назвою "IDE", але це відносно базовий редактор на версії віджетів Gtk. Поточна Isabelle включає Isabelle / jEdit, який не має "IDE" у своєму імені, але призначений для наближення речей, які ви бачите звичайно в Netbeans або IntelliJ IDEA --- для підтвердження текстів замість коду Java.


10

Ось декілька приємних відео уроків Coq від Андрея Бауера. Це аж ніяк не повно, але я думаю, що це вдалий вступ.


1
Чудово! Зазначте головне речення у "Першому доказі з Coq": "Подумайте, як би ви це зробили на папері". Найкраща порада коли-небудь.
Рафаель

4

Це вступ до Ізабел досить вичерпне.

Дивіться також це вступ до Ізабел

Взагалі, Ізабел розпочати порівняно легко, оскільки є багато доступних прикладів. Наприклад, на офіційному веб-сайті

PS - Я жодним чином не пов'язаний з Ізабел, я теоретик у формальних методах, але я знаю, що Ізабел часто виникає як початкова точка за замовчуванням.


1
"Я знаю, що Ізабел часто виникає як початкова точка за замовчуванням". Я б сказала, що HOL часто виступає як початкова точка за замовчуванням, і як помічник доказу, це скоріше Coq, який часто виступає за замовчуванням. Думаючи про це, це смішно ... Найвідоміша логіка (HOL, більш відома, ніж CoC) та найвідоміший помічник доказів (Coq, більш відомий, ніж Ізабель), не відповідають (Coq заснований на CoC, а Isabelle на HOL).
Hibou57

2

λ

Крім того, в програмних фондах літньої школи DeepSpec є кілька цікавих лекцій:

Деякі з лекцій, засновані на серії програмних фондів, про яку вже говорилося.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.