Различают процедуру принятия решения против решателя SMT и средства доказательства теорем против решателя ограничений

24

Эти термины смущают меня. Насколько я понимаю

  • SAT решатель: решить выполнимость логики высказываний (используя DPLL или локальный поиск).
  • Процедура принятия решения - это процедура определения выполнимости некоторой разрешимой теории первого порядка.
  • SMT-решатель - это SAT-решатель + процедура принятия решения.
  • Теорема доказатель указывает что-то вроде динамической логики, например, инструмент KeY
  • Решатель ограничений: я не знаю.

Но я вижу людей, называющих Z3 доказателем теорем. Так что я не знаю, как придумать эти условия. И какой самый общий термин для всех них? Спасибо.

ПБС
источник

Ответы:

19

SMT-решатель - это SAT-решатель + процедура принятия решения

Решатель SAT - это решатель проблемы решения: проблема SAT - это проблема решения. Кроме того, эта проблема решения "самовосстанавливаемая":

Проблема SAT является самовосстанавливаемой, то есть каждый алгоритм, который правильно отвечает, если экземпляр SAT является разрешимым, можно использовать для поиска удовлетворительного назначения.

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

Это означает, что решатели SAT могут также дать удовлетворительное назначение, в дополнение к решению проблемы.

TL; DR SMT решатели решают обобщение проблемы SAT, в зависимости от типов / ограничений, разрешенных в теории. Кроме того, они также позволяют кодирование отношений типов более высокого уровня, чем позволяют кодировки SAT.

(Aзнак равноВ)(Взнак равноС)(Aзнак равноС)

  1. См. Beaver SMT solver, который может даже вывести эквивалентную проблему SAT, которую необходимо решить.

Хотя решатель QF_BV SMT обладает этим преимуществом по сравнению с решателем SAT, я не думаю, что это преимущество сложности: они оба по существу эквивалентны и требуют экспоненциального времени для решения своих проблем в худшем случае. Но практически, решатель QF_BV SMT может быть намного быстрее благодаря этим дополнительным знаниям. См. Мой ответ на лимиты решателей SMT , где приведен пример чего-то, что считается «сложным», что (текущие) решатели QT_BV SMT и решатели SAT могут подавиться.

Существуют также решатели SMT, которые пытаются решить даже более сложные проблемы, чем булева удовлетворенность (например, разрешают типы и ограничения на реалы или разрешают квантификаторы); очевидно, что они теоретически, по крайней мере, такие же медленные, как SAT-решатель. Эти решатели SMT являются решением обобщения проблемы SAT; вместо использования бинарных переменных каждая «теория» допускает отношения / ограничения в разных областях, таких как действительные или количественные (для всех) ограничения.

Доказательство теоремы

пзнак равно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 Solver с Constraint Solver, см., Например, stackoverflow.com/questions/10584990/…
qsp
@qsp Я могу ошибаться, но я не уверен, что это сравнение означает. Во всяком случае, я просто недостаточно осведомлен, чтобы знать, является ли CSP каким-либо образом более мощным / общим, чем все SMT; если вы найдете ссылку для этого, не стесняйтесь редактировать ответ.
Реал Слав