我正在尝试将Z3与c ++ api(版本Z3 4.1.0.0)一起使用,即我试图从smt-competition不满核心轨道解析实例。 我写了(根据例子)以下代码:
context c;
Z3_ast f;
f = Z3_parse_smtlib2_file(c, "smtlib_uc/QF_IDL/queens_bench/n_queen/queen3-1.smt2.uc.smt2", 0, 0, 0, 0, 0, 0);
expr r = to_expr(c, f);
solver s(c);
s.add(r);
std::cout << s << "\n";
但是我收到以下错误:
(错误“第1行第34列:错误设置':产生不良核心',初始化后无法修改选项值”)
(错误“第220行第15栏:未启用不良核心构造,使用命令(set-option:produce-unsat-cores true)”)
意外错误:解析器错误
有人知道如何克服这个错误吗?
答案 0 :(得分:2)
Z3_parse_smtlib*
函数仅用于解析公式;因此,很多选项都无法与他们合作。
您只需删除输入文件中的(set-option :produce-unsat-cores true)
行,并在初始化context
时设置该选项。您可以使用Z3_solver_get_unsat_core来检索不满核心。
如果您不想修改输入文件,则应使用Z3二进制文件。这些选项将使用Z3二进制文件成功解析。