Z3の.NETAPIを使用して、モデルからFuncDeclの解釈を取得するための一般的な関数を作成しています。
簡略化されたコードフラグメントは次のとおりです。
Model m = s.Model;
foreach (FuncDecl d in m.Decls)
if (d.DomainSize == 0 && d.Arity == 0)
Console.WriteLine(d.Name + " -> " + m.ConstInterp(d));
else
Console.WriteLine(d.Name + " -> " + m.FuncInterp(d));
ただし、コードが。を呼び出そうとしたときに、配列宣言で失敗しましたConstInterp
。
Microsoft.Z3.Z3Exception:ゼロ以外のアリティ関数と配列には、モデルとしてFunctionInterpretationsがあります。FuncInterpを使用します。
Modelのすべてのプロパティを確認しましたが、配列宣言で正しい条件を作成するのに役立つプロパティはないようです。
どうすればこれを修正できますか?そして、私は他の種類の宣言も見逃しますか?