2017-03-17 4 views
1

がpysmtにあります。私がソルバを作成し、多くのアサーションを追加したと仮定します。今、私はソルバーインスタンスのコピーを作っています。ソルバーに別のアサーションを追加する必要があるからです。どうすればいいですか?私はコードのパフォーマンスを向上させるためにそうする必要があります。pysmtで作成されたソルバを複製するには?

私はcopy()、clone()、deepcopy()のようなことをしようとしましたが、すべて動作しません。私の現在の回避策は、すべてのアサーションを追跡し、新しいソルバーインスタンスを作成し、毎回ゼロから構築することです。あなたのシナリオでは

答えて

0

、最も簡単には以下のように思える:

あなたは「アサーション()」メソッドを使用してソルバーからすべてのアサーションを取得することができます。私はそれを行うことができますようにpysmtため

from z3 import * 
x, y = Ints('x y') 
s1 = Solver() 
s1.add(x <= y) 
print s1 
s2 = Solver() 
s2.add(s1.assertions()) 
print s2 
+0

は、思えませんが、必要であればどのような場合には、私はpysmtから離れて移動することができます。あなたが言及した通りに電話をすれば、私はかなりのパフォーマンスの向上を得ることができますか? – adrianX

+1

pysmtはまだそのような機能をサポートしていないようですが、ライブラリでラップされていない機能にアクセスする手段を提供しています。http://pysmt.readthedocs.io/en/latest/tutorials.html#howアクセス機能のソルバー(現在はパッケージ化されていない) –

+0

こんにちはChristoph、そうだよ!より完全にドキュメントを読んでいたはずです。ありがとうございました! – adrianX

関連する問題