Можно ли использовать 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 разделе "Дерево интерполяторов".