我正在编写一个通用函数来使用Z3 的 .NET API从模型中获取对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上的所有属性,但似乎没有任何属性有助于在数组声明上创建正确的条件。
我怎样才能解决这个问题?我是否也错过了任何其他类型的声明?