В Z3 Int
бесконечно.Вы правы, результат должен быть sat
.Результат unsat
вызван ошибкой в одном из модулей Z3.Я уже исправил ошибку.Один временный кеш в реализации не сбрасывался.Исправление будет доступно в следующем выпуске.Тем временем вы можете отключить модуль с ошибками, используя следующую команду в начале вашего скрипта.
(set-option :mbqi false)
Кстати, ошибка затрагивает только примеры, содержащие литералы вида (= x y)
, где x
и y
- универсальные переменные.
Кстати, хотя ваш пример выполним, Z3 не может построить модель для него (даже после исправления ошибки).На самом деле, после исправления ошибки, Z3 выдает ответ unknown
.Средство поиска моделей (используется в Z3) способно находить только те модели, в которых интерпретация неинтерпретированных видов (таких как PZ) конечна.Это ограничение может измениться в будущем.