我在Linux下编译了昨天的z3不稳定分支的.NET绑定(令人惊讶的是,这没有太多的痛苦)并且我现在正试图在F#项目中使用它们。这也有效,但在执行时,我在stderr上重复了以下几行:
警告:设置SOFT_TIMEOUT时出错:未知参数'soft_timeout'
警告:错误设置MODEL_COMPLETITION:未知参数'model_completition'
这只发生在我们的项目中,而不是在运行examples / dotnet / Program.cs示例时。我不知道从哪里开始寻找这个问题的根源。想法?
答案 0 :(得分:1)
examples/dotnet/Program.cs
中的示例不使用soft_timeout
和model_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将填充未分配的变量。