そこで smtlib2 インスタンスから unsat コアを取得したとき、それらを (not (>=::Int x1)) などの句として分割し、その句を z3 に追加して再度解決しようとしましたが、問題が発生しました遵守後。
警告: 無効な関数の適用、位置 1 の引数の並べ替えの不一致警告: (define not Bool Bool) の適用先: (not (<= 0::Int x6)) of sort 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();
}
助けていただけませんか?どうもありがとうございました。