在Linux上使用z3 .NET绑定时出现警告(“未知参数'model_completion'”)

时间:2013-12-10 14:22:35

标签: .net linux f# z3

我在Linux下编译了昨天的z3不稳定分支的.NET绑定(令人惊讶的是,这没有太多的痛苦)并且我现在正试图在F#项目中使用它们。这也有效,但在执行时,我在stderr上重复了以下几行:

  

警告:设置SOFT_TIMEOUT时出错:未知参数'soft_timeout'

     

警告:错误设置MODEL_COMPLETITION:未知参数'model_completition'

这只发生在我们的项目中,而不是在运行examples / dotnet / Program.cs示例时。我不知道从哪里开始寻找这个问题的根源。想法?

1 个答案:

答案 0 :(得分:1)

examples/dotnet/Program.cs中的示例不使用soft_timeoutmodel_completion;他们为什么要打印出这样的警告?

您似乎尝试直接在Context设置这些参数。

在Z3 4.x中,您可以从上下文创建多个解算器,因此soft_timeout应该是特定于解算器的。

// Dispose Z3 Context after current scope
use context = Context()
let solver = context.MkSolver()
let p = context.MkParams()
// Set soft_timeout to 1000 ms
p.Add("soft_timeout", 1000u)
solver.Parameters <- p

有关详细信息,请参阅a similar thread

我不知道您为什么需要设置model_completion(请注意MODEL_COMPLETITION设置中的拼写错误)。您可以随时使用:

model.Eval(expr, true)

其中expr是abitrary Expr,而true表示Z3将填充未分配的变量。