使用.NET Z3 API进行核心生成

时间:2014-08-11 16:19:18

标签: z3

我试图使用Z3 4.3.0和.NET API打开不良核心生成。

调用context.UpdateParamValue("unsat_core", "true")会在邮件"错误设置' unsat_core',原因:未知选项"。

的情况下引发异常

检查context.SimplifyParameterDescriptions仅列出以下参数:

(:ite-extra-rules, :flat, :elim-and, :local-ctx, :local-ctx-limit, :blast-distinct, :som, :som-blowup, :hoist-mul, :hoist-cmul, :algebraic-number-evaluator, :mul-to-power, :expand-power, :expand-tan, :max-degree, :eq2ineq, :sort-sums, :gcd-rounding, :arith-lhs, :elim-to-real, :push-to-real, :elim-rem, :udiv2mul, :split-concat-eq, :bit2bool, :blast-eq-value, :elim-sign-ext, :hi-div0, :mul2concat, :expand-select-store, :sort-store, :max-memory, :max-steps, :push-ite-arith, :push-ite-bv, :pull-cheap-ite, :cache-all)

这与previously asked question有关,似乎没有得到确凿的答案。

1 个答案:

答案 0 :(得分:1)

配置需要采取的确切形式取决于Z3的哪些部分以及正在使用的版本。 SimplifyParameterDescriptions仅用于简化(调用Simplify策略或Expr.Simplify)。需要在Context(通过它的构造函数和选项nuts_core)或通过Goal的参数(参见Context.MkGoal)启用Unsat-core generation。

我无法在现在的位置测试它,但我认为旧版本(master / 4.3.0)在大写字母中使用了相同的参数名称。较新版本(即不稳定分支)也具有在Global.SetParamValue中设置全局参数的功能。对于这种混乱感到抱歉,但自上次主版本发布以来,参数设置基础架构已完全被替换。