Z3 を使用して、配列プロパティ フラグメント内の式の充足可能性を確認しています。Z3 が返す配列変数のモデルは通常、他の if 式や if-then-else の場合分けなどを使用して表現されます。 Z3 が出力するモデルを何らかの方法で解析し、入力 SMT-LIB 式を満たす配列を作成したい、明示的に。
たとえば、Z3 が次の形式に出力するモデルを常に単純化できるようにしたいと考えています。
A -> {
1 -> 3
2 -> 4
else -> 6
}
モデルを (C API を使用して) トラバースし、モデルを表す明示的な配列を作成する簡単な方法はありますか?