z3 / python reals

Con la interfaz web z3 / python, si pregunto:

x = Real ('x')
solve(x * x == 2, show=True)

Me encanta:

Problem:
[x·x = 2]
Solution:
[x = -1.4142135623?]

Pensé que el siguiente script smt-lib2 tendría la misma solución:

(set-option :produce-models true)
(declare-fun s0 () Real)
(assert (= 2.0 (* s0 s0)))
(check-sat)

Alas, consigounknown con z3 (v3.2).

Sospecho que el problema es con el término no lineal(* s0 s0), que la interfaz de Python de alguna manera no sufre. ¿Hay alguna manera de codificar lo mismo en smt-lib2 para obtener un modelo?

Respuestas a la pregunta(2)

Su respuesta a la pregunta