Z3 get-answer возвращает неподдерживаемые

Я использую механизм фиксированной точки в Z3 для кодирования нескольких универсальных формул рога. Запрос оказывается неактивным. В Z3Py использование get_answer() возвращает оценки неинтерпретированным отношениям. Однако в формате SMTLIB2 получение ответа unsupported. Здесь моя программа:

(declare-var x Int)
(declare-var y Int)

(declare-rel I (Int) interval_relation)
(declare-rel I1 (Int) interval_relation)
(declare-rel err (Int) interval_relation)

(rule (=> (= x 0) (I x) ))
(rule (=> (and (= y (+ x 1)) (I x) ) (I1 y) ))
(rule (=> (and (> y 2) (I1 y)) (err y) ))

(query (err y)
 :engine pdr
:use-farkas true
:print-answer true
)
(get-answer)

Выход, который я получаю с использованием version 4.3.2 Z3, это:

unsat
unsupported
; get-answer

В Z3Py, создавая контекст фиксированной точки fp=Fixedpoint(), а затем выполнение print fp.get_answer() возвращает оценки в I, I1 и err. Есть ли способ получить то же самое в формате SMTLIB2? Благодарю.

1 ответ

Раздел комментария, по сути, отвечает на вопрос. Расширение SMT-LIB2 для "запроса" принимает атрибуты, подобные вашему примеру. Фактически: отпечаток-ответ составляет ответ.

licensed under cc by-sa 3.0 with attribution.