Vi
Z3 を使用して、変数に対するブール制約と次の形式の制約で構成されるシステムを解決しています。
L < If(V0, T0, F0) + If(V1, T1, F1) + ... + If(Vn, Tn, Fn) <= H
ここL
で、H
、 、Ti
およびFi
は整数定数です。
すべての変数はブール値ですが、QF_LIA ソルバーは一般的なものよりも多少高速であることがわかったので、前者を使用しています。私の推測では、Z3 は新しい変数と句を導入して加算器を明白な方法で実装することにより、上記の制約を処理していたということでした。ただし、その変換を自分で (MiniSat+ を使用して) 実行し、結果を SAT ソルバーに渡すには、Z3 よりも桁違いに時間がかかります。したがって、上記のタイプのシステムを解決するために Z3 がどのような戦略を使用するのか疑問に思っています - それは加算器を使用した変換以外のものですか?