Як "тактика" працює у помічників?


44

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

Передумови щодо мого інтересу: Кілька місяців тому я вирішив, що хочу навчитися формальній математиці. Я вирішив піти з теорією типів, тому що за попередніми дослідженнями це виглядає як The Right Way To Do Things (tm) і тому, що це, здається, уніфікує програмування та математику, що є захоплюючим . Я думаю, що моя кінцева мета полягає в тому, щоб мати можливість використовувати та розуміти асистента на доказ, як Coq (я думаю, що особливо вміти використовувати залежні типи, оскільки мені цікаво речей, таких як представлення типів матриць). Я почав знати дуже мало, навіть рудиментарне функціональне програмування, але я роблю повільний прогрес. Я читав і розумів великі шматки типів і мов програмування (Пірс) і вивчив деякі Haskell та ML.


1
Це безсоромна реклама моїх відеоуроків по Coq, math.andrej.com/2011/02/22/…
Андрій Бауер

Відповіді:


36

Основна тактика або запускає правило висновку вперед або назад (наприклад, перетворити гіпотези і B в A B або перетворити цілі A B у дві цілі A і BABABABABз однаковими гіпотезами) застосуйте лему (~ функціональний додаток), розділіть лему про якийсь індуктивний тип на випадок для кожного конструктора тощо. Основні тактики можуть бути успішними або провалюватися залежно від контексту, в якому вони застосовуються. Більш вдосконалена тактика - це як маленькі функціональні програми, які виконують основні тактики, виконують узгодження шаблонів над умовами в цілі та / або припущеннях, роблять вибір на основі успіху чи невдачі тактики тощо. Більш досконала тактика стосується арифметичних та інших специфічних видів теорій. Ключовий документ про тактичну мову Coq:

  • Д. Делахай. Тактична мова для системного кок . «Праці логіки програмування та автоматизованого обґрунтування» (LPAR), Острів Реюньйон, том 1955 р. Лекційні записки з інформатики, стор. 85–95. Спрингер-Верлаг, листопад 2000 року.

Формальні правила, які складають суть основної тактики, визначені в посібнику користувачів Coq тут або в Розділі 4 pdf .

Досить повчальним документом щодо впровадження тактики та тактики (по суті, тактики, яка сприймає інші тактики як аргументи) є:

Мова тактики Кока має обмеження, що докази, написані на ній, навряд чи нагадують докази, які можна зробити вручну. Було зроблено кілька спроб, щоб зробити більш чіткими докази. До них відносяться Ізар (для Isabelle / HOL) і Mizar «s доказ мови.

Убік: Чи ви також знали, що ML мови програмування спочатку був розроблений для реалізації тактики для підтвердження теореми LCF ? Багато ідей, розроблених для ML, наприклад, умовивід типу, вплинули на сучасні мови програмування.


3
Чудова відповідь. Сертифіковане програмування Адама Чліпала із залежними типами ( adam.chlipala.net/cpdt ) - ще один хороший ресурс щодо використання тактики в Coq.
jbapple

16

LCF справді є онуком усієї цієї системи: Coq, Isabelle, HOL, включаючи мову програмування ML (яку ми сьогодні бачимо як OCaml, SML, також F #). Так, я включаю Coq як член більшої родини LCF. Порівняно з американсько-американськими асистентами (зокрема ACL2) або абсолютно незв'язаними Мізаром, Кок культурно досить близький до Ізабел та HOL, головним чином завдяки спільній ідеї тактики .

То що таке тактика в будь-якому випадку, позбавлена ​​випадкових спостережень за переписуванням, перетворенням, введенням чи усуненням сполучників?

Основний принцип шарування тут успадкований від LCF від Мілнера:

  • Основні умовиводи (прямі міркування), або як абстрактний тип даних thmв оригінальному підході до LCF, або з роздільною перевіркою термінів доказування у гілці сім'ї-теорії типу (Coq, Matita). Це дає певну логічну основу для результатів, які прихильник вважає теоремами. Таким чином, у вас може бути примітивний висновок, який приймає ⊢ A і ⊢ B і дає вам ⊢ A ∧ B. Інший примітивний висновок може дати вам ⊢ t = u, де u - бета-нормальна форма t. Жоден із цих механізмів не є тактикою, однак це правила виводу, як у стандартній логіці.

  • Доказ, спрямований на ціль (зворотні міркування). Ідея полягає в тому, що ви працюєте над деяким поняттям "стан цілі", вдосконалюючи його, розбиваючи його на все більше і більше підголів, закритих підрядних цілей, поки все не буде вирішено. Закінчивши стан цілі, певна теорема вискочить з процесу. LCF запровадив певну поза логічну інфраструктуру для цілей, яка все ще існує в HOLs: тактика - це деяка функція ML, яка уточнює ціль і дає певне виправдання для уточнення. У самому кінці доказу обгрунтування відтворюється у зворотному порядку для отримання доказу у прямому порядку відповідно до примітивних висновків, замальованих вище.

Кок і Матіта все ще досить близькі до цього принципу LCF. Ізабель тут інша: ще в 1989 році Ларрі Полсон реформував уявлення про мету і тактику, щоб наблизити їх до логіки, яка є тут "чистою" логічною рамкою Ізабелли. Isabelle / Pure забезпечує мінімальну логіку вищого порядку з імплікацією ==> та кількісний показник !! які вказують як на структуру природних дедукційних правил, так і на цілі станів.

Наприклад, ⊢ A ==> B ==> A ∧ B - правило введення сполучників (логіки об'єкта) як теорема логічної основи.

Стани цілі - це лише теореми, починаючи з ⊢ C ==> C для початкового твердження C, яке уточнюється до ⊢ X ==> Y ==> Z ==> C у проміжних станах, де X, Y, Z є поточними підрядними цілями, і процес закінчується ⊢ C (без підголів).

Тепер повернемось до тактики, яка є більш рівномірною для всіх цих доказів: враховуючи деяке поняття стану мети (наприклад, Ізабелла вище), тактика - це функція, яка відображає стан цілі (0, 1 або більше) для подальшого контролю цілі станів. Крім того, тактичний є комбінатором таких тактичних функцій, наприклад , для вираження послідовної композиції, вибору, повторити і т.д. Насправді, мова тактики і tacticals пов'язаний з «переліком успіхів» підхід синтаксичного аналізатора комбінаторів.

Тактика дозволяє систематично описувати певні стратегії вдосконалення цілей. Вони виявилися досить успішними з часу їх винаходу в LCF у 1970/80-х роках, але вони створюють сумнозрозумілі сценарії, що не читаються.

Недавній огляд деяких аспектів тактичних мов даються в статті А. Asperti і ін, PLMMS 2009 см практикумів стор.22.

Мізар та Ізабель / Ізар були згадані як альтернативні підходи до зрозумілого для людини структурованого міркування , і вони не ґрунтуються на тактиці в цьому сенсі. Мізар не має відношення до родини LCF, тому не знає такої тактичної термінології. Ізабель / Ісар певною мірою включає тактичну традицію, але її поняття методу доказування є дещо більш структурованим (із чітким контекстом доказування Ізара, чітким зазначенням фальшивих фактів та уникненням внутрішнього злому цілей під час міркувань).

За останні десятиліття було проведено багато реформ та переглянувань тактичних мов. Наприклад, недавнє відділення спільноти Coq надає перевагу SSReflect (Г. Гонтьє) замість традиційного Ltac.


12

Як "тактика" працює у помічників?

Я підозрюю, що ця відповідь буде дещо бурхливою.

По-перше, недостатньо запитати "як працює тактика у помічників доказування", оскільки вони працюють по-різному у різних помічників. Сьогодні використовуються два основні класи помічників: ті, що походять від оригінального LCF, як Ізабел, HOL і HOL світло, і допоміжні докази, що базуються на теорії типу, як Coq і Matita. У цих двох різних класах помічника доказування тактика працює різними способами, відображенням того, що відбувається під капелюшком, наприклад, Ізабел, зовсім інше, ніж те, що відбувається під капелюшком, наприклад, Матіта.

Запитайте себе: що відбувається, коли ми намагаємося довести судження Р в Матіті? Ми вводимо метавирізний X з типом P. Потім ми граємо в гру, так би мовити, де вдосконалюємо X, додаючи все більшу структуру неповному терміну, поки не отримаємо повний лямбда-термін (тобто не містить більше метазмінних). Після того, як ми маємо повний лямбда-термін, ми вводимо перевірку щодо Р, переконуючись, що він населяє потрібний тип. Тоді ми бачимо, що в Кок і Матіта тактика - це лише функція від неповних термінів доказування до неповних термінів доказування, що, сподіваємось, додає трохи структури терміну після застосування (це спостереження мотивувало досить небагато недавньої роботи, наприклад, Джойгова , Pientka та ін.).

Наприклад, тактика Матіта "вступ" вводить лямбда-абстракцію над існуючим терміном, "випадки" вводить словосполучення в термін, а "застосувати" вводить додаток одного терміна до іншого. Ці основні тактики можна скласти разом, використовуючи функції вищого порядку, щоб створити більш складні. Основна ідея завжди однакова: тактика завжди спрямована на те, щоб додати трохи структури в неповний термін підтвердження.

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

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

З іншого боку, помічники у стилі LCF досить різні. Тут ядро ​​складається з модуля (зазвичай реалізованого у варіанті ML), що містить абстрактний тип "thm" та функцій, що реалізують правила виводу логіки асистента доказування, відображення "thm" на "thm" тощо. вперед. Ми покладаємось на дисципліну введення тексту ML, щоб переконатися, що єдиний спосіб побудови значення типу "thm" - це за допомогою цих правил виводу (основні тактики). Ядро Ізабель знаходиться тут .

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

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