Z3 でブール式の自動簡略化を無効にすることはできますか?
たとえば、式 2 > 1 は、2 > 1 のままにしたいのですが、自動的に True になります。
>>> t = 2 > 1
>>> t
True
Z3Py で help_simplify() を呼び出して、いくつかのオプションを見つけました。しかし、それらのどれも私の問題に関連していないようです。
別のチュートリアル ( http://citeseerx.ist.psu.edu/viewdoc/download?rep=rep1&type=pdf&doi=10.1.1.225.8231 ) では、オプション "CONTEXT SIMPLIFIER" が言及されています。 -数式を真または偽にします。" ただし、Z3Py ではこのオプションを見つけることができませんでした。
背景: And(2>1, 1!=2) のような式を使用できるようにしたいと考えています。ここで、2>1 と 1!=2 は以前に自動的に生成され、変数 (定数) を含まない場合があります。Z3Py はこれを And(True, False) に簡略化しますが、これは受け入れられません。これは、「引数の少なくとも 1 つが Z3 式またはプローブでなければならない」ためです。したがって、簡素化は抑えたいと思います。または、And(True, False) を受け入れられる式にする方法はありますか?
前もって感謝します!