Розрізняють Порядок прийняття рішень від SMT Solver проти теореми доказів проти обмеження


24

Ці термінології мене бентежать. Як я розумію

  • SAT вирішувач: вирішити відповідність логіки пропозицій (використовуючи DPLL або локальний пошук).
  • Процедура прийняття рішення - це процедура вирішення відповідності певної рішучої теорії першого порядку.
  • SMT solver - це рішення SAT + процедура прийняття рішення.
  • Підтвердження теореми вказує на щось на зразок динамічної логіки, наприклад, інструмент KeY
  • Вирішувач обмежень: я не знаю.

Але я бачу людей, які називають Z3 доказом теореми. Тож я не знаю, як приготувати ці терміни. І який для них найзагальніший термін? Дякую.

Відповіді:


19

SMT solver - це рішення SAT + процедура прийняття рішення

Розв'язувач SAT - це вирішення проблеми рішення: проблема SAT - це проблема рішення. Крім того, ця проблема вирішення "самовідводиться":

Проблема SAT є самовідновлюваною, тобто кожен алгоритм, який правильно відповідає, якщо екземпляр SAT вирішується, може бути використаний для пошуку задовольняючого завдання

- ( Вікіпедія )

Це означає, що розв'язувачі SAT також можуть вирішити проблему, крім вирішення проблеми.

Розв'язувачі TL; DR SMT вирішують узагальнення задачі SAT, залежно від типів / обмежень, дозволених у теорії. Крім того, вони також дозволяють кодувати відносини типів більш високого рівня, ніж це дозволяє кодування SAT.

Розв'язувач SAT зазвичай має справу з багатьма одиночними булевими змінними, які пов'язані лише через положення / обмеження CNF . Теорія SMT-розв'язувача QF_BV (без квантифікаторів), в основному, розв'язувач SAT + додаткова інформація про взаємозв'язки. Наприклад, розв'язувач QT_BV SMT можна привести до SAT 1 . Так навіщо використовувати вирішувач QT_BF SMT? Основна перевага полягає в тому, що в SAT ціле число представлено різними змінними, які на перший погляд можуть здатися не пов'язаними. Розв'язувач SAT витратив би багато часу на повторне вивчення простих відносин, наприклад на цілому рівні(А=Б)(Б=С)(А=С) , в той час як SMT-розв'язувач знає, що окремі біти пов'язані таким чином з самого початку, оскільки мова SMT QF_BV знаходиться на цілому рівні (фіксована ширина біта). Таким чином, розв'язувач QT_BV SMT може міркувати на цілому рівні, крім рівня бітів.

  1. Див. Вирішувач Beaver SMT, який навіть може вивести еквівалентну проблему SAT, яку потрібно вирішити.

Хоча вирішувач QF_BV SMT має цю перевагу перед рішенням SAT, я не думаю, що це є перевагою складності: вони обидві по суті еквівалентні і потребують експоненціального часу для вирішення своїх найгірших проблем. Але практично, вирішувач QF_BV SMT може бути набагато швидшим завдяки цим додатковим знанням. Дивіться мою відповідь на обмеження вирішувачів SMT , на прикладі чогось, що вважається "важким", що (поточні) розв'язувачі SMT QF_BV і SAT вирішуватимуться.

Є також розв'язувачі SMT, які намагаються вирішити ще складніші проблеми, ніж булева задоволеність (наприклад, дозволяючи типи та обмеження щодо дій, або дозволяючи кількісні показники); очевидно, що вони теоретично принаймні такі ж повільні, як вирішувач SAT. Ці розв'язки SMT є вирішенням узагальнення проблеми SAT; замість використання бінарних змінних, кожна "теорія" допускає зв'язки / обмеження для різних областей, таких як реальні чи кількісно визначені (для всіх) обмеження.

Теорема підтвердження

Автоматизована теорема доводить є вирішувач , що при будь - то системі доказів, деякі припущення, і мета , щоб довести, буде «заповнити прогалини» між припущеннями і цілі. У ньому також буде якийсь верифікатор для перевірки доказів (який швидко працює). Підтвердження теореми може покластись на розв'язувач SAT для заповнення пробілів; насправді, якщо і існує практичний алгоритм вирішення повних завдань NP, потенційно можна довести майже всі корисні доказові речі (у розумні строки):П=NП

Але такі зміни можуть виявитись блідими в порівнянні з революцією, що ефективний метод вирішення повних задач NP спричинить у самій математиці. За словами Стівена Кука, [19]

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

- ( Вікіпедія )

[19]: Кук, Стівен (квітень 2000). Проблема P проти NP. Інститут математики глини (PDF) .

Причина цього спрацює в тому, що "формальні докази можуть бути легко розпізнані в поліноміальний час" за допомогою верифікатора, а означатиме, що на проблеми, які можуть бути перевірені в поліноміальний час, можна відповісти і в поліноміальний час.П=NП

Але наразі автоматизована теорема здебільшого доводить використання евристики або експоненціальних алгоритмів часу (але вони все ще корисні).

Вирішувач обмежень

Зазвичай це переформатування розв'язувачів SAT / SMT на інші мови. Якщо ви коли-небудь використовували будь-які вирішувачі SAT / SMT для вирішення проблеми, ви можете по-справжньому полюбити недетерміновану здатність вирішувачів. Тобто, замість того, щоб говорити комп’ютеру, як щось робити, ви говорите йому, що хочете , тобто. якими властивостями ви хочете мати вихід, і вирішувач SAT / SMT буде недетермінованим "заповнювати його", не турбуючи вас деталями реалізації. Така парадигма програмування дуже приваблива і називається обмеженням програмування , і для запуску вона повинна використовувати вирішувач обмежень (який може використовувати розв'язувач SAT / SMT у бекенді, залежно від типів та обмежень, які він дозволяє використовувати) .

Але я бачу людей, які називають Z3 доказом теореми. Тож я не знаю, як приготувати ці терміни.

AFAIK, Z3 - це набір багатьох інструментів, включаючи SMT-розв'язувач, декілька мов, що підтверджують теорему / перевіряють модель, тощо.

І який для них найзагальніший термін?

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


1
Спасибі за вашу відповідь. Але я не думаю, що вирішення SMT є найбільш загальним терміном. Оскільки люди часто порівнюють SMT вирішувач проти решателя, дивись , наприклад , stackoverflow.com/questions/10584990 / ...
ПБС

@qsp Я можу помилятися, але я не впевнений, що це порівняння має на увазі. У всякому разі, я просто недостатньо обізнаний, щоб знати, чи є CSP якимось чином більш потужним / загальним, ніж усі SMT; якщо ви знайдете посилання на це, сміливо відредагуйте відповідь.
Realz Slaw
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.