Z3モデルから実際のPython値を取得するにはどうすればよいですか?Z3/PythonモデルからPython値を取得する
など。
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のオブジェクトであり、フロート/ BOOLオブジェクトをPYTHONありません。
は私がis_true
/is_false
を使用してブール値をチェックすることができますことを、私はエレガントに(例えば、文字列を通過すると、この余分な?
シンボルを離れて切断することなく)int型/実数/ ...背中使用可能な値に変換することができます方法を知っています。
あなたは 'ブール(s.model()[X])'と 'フロート(s.model()[P])'を試してみました:それはオンラインでも入手できますか? –
はい、それは動作しません(正しく): 'bool(s.model()[p])'は 'False'と' float(s.model()[x] ) '例外をスローする' AttributeError:AlgebraicNumRefインスタンスに '__float __'属性がありません。 – tqx