Можно ли использовать iZ3 для извлечения симметричных интерполантов

Я хотел бы знать, как iZ3 может использоваться для извлечения симметричных интерполантов. Внутренне iZ3 использует FOCI, а FOCI имеет симметричное интерполяционное извлечение. FOCI не принимает формат smt. Поэтому я хотел бы знать, есть ли какой-либо метод извлечения симметричных интерполантов из самого iz3

заранее спасибо

1 ответ

Решение

Вы можете получить симметричные интерполанты в качестве частного случая интерполяции дерева. Вот пример:

(declare-const a Int)
(declare-const b Int)
(declare-const c Int)
(declare-const d Int)
(compute-interpolant
  (and
    (interp (<= 0 a))
    (interp (and (= a b) (= b c)))
    (interp (and (= c d) (<= d -1)))))

Вот вывод z3:

unsat
(>= a 0)
(= a c)
(<= c (- 1))

Взгляните на учебник по адресу http://rise4fun.com/iZ3/tutorial/guide разделе "Дерево интерполяторов".

Другие вопросы по тегам