Как я могу получить реальные значения python из модели Z3?
например.
p = Bool('p')
x = Real('x')
s = Solver()
s.add(Or(x < 5, x > 10), Or(p, x**2 == 2), Not(p))
s.check()
print s.model()[x]
print s.model()[p]
печатает
-1.4142135623?
False
но это объекты Z3, а не объекты python float/bool.
Я знаю, что я могу проверить логические значения с помощью is_true
/is_false
, но как я могу элегантно преобразовать ints/reals/... обратно к полезным значениям (без прохождения строк и отсечения этого дополнительного ?
символ, например).