那里当我从 smtlib2 实例中获得 unsat cores 时,我将它们拆分为一个子句,例如(not (>=::Int x1))。然后我尝试将该子句添加到 z3 以再次解决。但是问题发生了被遵守后。
警告:无效的函数应用,位置 1 的参数排序不匹配警告:(定义非 Bool Bool)应用于:(非(<= 0::Int x6))排序 Bool
expr F = to_expr(ctx,f);
solver s(ctx);`
expr_vector todo(c);
vector<expr> u;
todo.push_back(F);
while (!todo.empty()) {
expr current = todo.back();
todo.pop_back();
if (current.decl().decl_kind() == Z3_OP_AND) {
for (unsigned i = 0; i < current.num_args(); i++) {
u.push_back(current.arg(i));
}
}
}
for(i=0;i<u.size();i++){
expr r = to_expr(ct.,Z3_mk_not(ctx,u[i]));
s.add(r);
}
if(s.check() == sat){
model m = s.get_model();
}else if(s.check() == unsat){
expr_vector core = s.unsat_core();
}
你能帮帮我吗?非常感谢。