`Z3_set_param_value中的未知参数`timeout`(cfg,“timeout”,“10”)`;

时间:2015-11-10 07:08:42

标签: c api z3

设置超时始终是一个热门话题,并且有许多相关的答案,但是,在Z3的最新不稳定分支(4.4.2)(Ubuntu-12.04-64)中会出现一个新的警告。

在我的项目中使用Pure C API,我使用Z3_assert_cnstr()添加约束,使用Z3_check_and_get_model()来检查结果。

我将超时设置为:

Z3_set_param_value(cfg, "timeout", "10");

10毫秒。

当我运行项目时,会出现如下警告:

WARNING: unknown parameter 'timeout'
Legal parameters are:
auto_config (bool) (default: true)
debug_ref_count (bool) (default: false)
dump_models (bool) (default: false)
model (bool) (default: true)
model_validate (bool) (default: false)
proof (bool) (default: false)
rlimit (unsigned int) (default: 4294967295)
smtlib2_compliant (bool) (default: false)
timeout (unsigned int) (default: 4294967295)
trace (bool) (default: false)
trace_file_name (string) (default: z3.log)
type_check (bool) (default: true)
unsat_core (bool) (default: false)
well_sorted_check (bool) (default: false)

根据规范,“超时”是一个合法的参数。

我错过了什么吗?

我测试使用“10u”而不是“10”作为第三个参数来表示无符号数,但是,没有任何改变。此外,从主分支修复的ASSERTION VIOLATION是我使用不稳定分支的原因。

1 个答案:

答案 0 :(得分:1)

在源代码中查看HERE,我认为

中存在错误
void set    (   char const *    param,
                char const *    value 
            )   

if以下

if (p == "rlimit") 

应该是

else if (p == "rlimit")

避免错误。

在GitHub上的当前提交中查看HERE,它已在10月7日得到纠正。