Z3 には 2 つの SAT ソルバー エンジンがあり、戦略フレームワークを使用してより効率的なエンジンを有効にすることができます。たとえば、チュートリアルZ3 - 戦略を参照してください。
ビットベクトル式の戦略の使用を示すセクションがあります。
(declare-const x (_ BitVec 16))
(declare-const y (_ BitVec 16))
(assert (= (bvor x y) (_ bv13 16)))
(assert (bvslt x y))
(check-sat-using (then simplify solve-eqs bit-blast sat))
(get-model)
とはいえ、XOR を使用して CDCL ベースの SAT ソルバーのハード インスタンスを生成するのは比較的簡単です。例えば:
Randal E. Bryant: A View from the Engine Room: Computational Support for Symbolic Model Checking. 25 Years of Model Checking 2008: 145-149
Z3 のより効率的な sat ソルバー (上記の例で呼び出されます) には、xor (同等性) を検出して伝播するためのデータ構造がいくつかあります。