mirror of
https://github.com/Z3Prover/z3
synced 2025-04-24 01:25:31 +00:00
update timeout logic
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
cf55854d22
commit
fb0305d5ec
2 changed files with 20 additions and 19 deletions
|
@ -36,7 +36,8 @@ extern "C" {
|
|||
};
|
||||
inline Z3_optimize_ref * to_optimize(Z3_optimize o) { return reinterpret_cast<Z3_optimize_ref *>(o); }
|
||||
inline Z3_optimize of_optimize(Z3_optimize_ref * o) { return reinterpret_cast<Z3_optimize>(o); }
|
||||
inline opt::context* to_optimize_ref(Z3_optimize o) { return to_optimize(o)->m_opt; }
|
||||
inline opt::context* to_optimize_ptr(Z3_optimize o) { return to_optimize(o)->m_opt; }
|
||||
inline opt::context& to_optimize_ref(Z3_optimize o) { return *(to_optimize(o)->m_opt); }
|
||||
|
||||
Z3_optimize Z3_API Z3_mk_optimize(Z3_context c) {
|
||||
Z3_TRY;
|
||||
|
@ -70,7 +71,7 @@ extern "C" {
|
|||
LOG_Z3_optimize_assert(c, o, a);
|
||||
RESET_ERROR_CODE();
|
||||
CHECK_FORMULA(a,);
|
||||
to_optimize_ref(o)->add_hard_constraint(to_expr(a));
|
||||
to_optimize_ref(o).add_hard_constraint(to_expr(a));
|
||||
Z3_CATCH;
|
||||
}
|
||||
|
||||
|
@ -80,7 +81,7 @@ extern "C" {
|
|||
RESET_ERROR_CODE();
|
||||
CHECK_FORMULA(a,0);
|
||||
rational w(weight);
|
||||
return to_optimize_ref(o)->add_soft_constraint(to_expr(a), w, to_symbol(id));
|
||||
return to_optimize_ref(o).add_soft_constraint(to_expr(a), w, to_symbol(id));
|
||||
Z3_CATCH_RETURN(0);
|
||||
}
|
||||
|
||||
|
@ -89,7 +90,7 @@ extern "C" {
|
|||
LOG_Z3_optimize_maximize(c, o, t);
|
||||
RESET_ERROR_CODE();
|
||||
CHECK_VALID_AST(t,0);
|
||||
return to_optimize_ref(o)->add_objective(to_app(t), true);
|
||||
return to_optimize_ref(o).add_objective(to_app(t), true);
|
||||
Z3_CATCH_RETURN(0);
|
||||
}
|
||||
|
||||
|
@ -98,7 +99,7 @@ extern "C" {
|
|||
LOG_Z3_optimize_minimize(c, o, t);
|
||||
RESET_ERROR_CODE();
|
||||
CHECK_VALID_AST(t,0);
|
||||
return to_optimize_ref(o)->add_objective(to_app(t), false);
|
||||
return to_optimize_ref(o).add_objective(to_app(t), false);
|
||||
Z3_CATCH_RETURN(0);
|
||||
}
|
||||
|
||||
|
@ -107,20 +108,19 @@ extern "C" {
|
|||
LOG_Z3_optimize_check(c, o);
|
||||
RESET_ERROR_CODE();
|
||||
lbool r = l_undef;
|
||||
cancel_eh<opt::context> eh(*to_optimize_ref(o));
|
||||
unsigned timeout = 0xFFFFFFF;
|
||||
// to_optimize(o)->m_params.get_uint("timeout", mk_c(c)->get_timeout());
|
||||
cancel_eh<opt::context> eh(to_optimize_ref(o));
|
||||
unsigned timeout = to_optimize_ref(o).get_params().get_uint("timeout", mk_c(c)->get_timeout());
|
||||
api::context::set_interruptable si(*(mk_c(c)), eh);
|
||||
{
|
||||
scoped_timer timer(timeout, &eh);
|
||||
try {
|
||||
r = to_optimize_ref(o)->optimize();
|
||||
r = to_optimize_ref(o).optimize();
|
||||
}
|
||||
catch (z3_exception& ex) {
|
||||
mk_c(c)->handle_exception(ex);
|
||||
r = l_undef;
|
||||
}
|
||||
// to_optimize_ref(d)->cleanup();
|
||||
// to_optimize_ref(d).cleanup();
|
||||
}
|
||||
return of_lbool(r);
|
||||
Z3_CATCH_RETURN(Z3_L_UNDEF);
|
||||
|
@ -131,7 +131,7 @@ extern "C" {
|
|||
LOG_Z3_optimize_get_model(c, o);
|
||||
RESET_ERROR_CODE();
|
||||
model_ref _m;
|
||||
to_optimize_ref(o)->get_model(_m);
|
||||
to_optimize_ref(o).get_model(_m);
|
||||
Z3_model_ref * m_ref = alloc(Z3_model_ref);
|
||||
if (_m) {
|
||||
m_ref->m_model = _m;
|
||||
|
@ -149,10 +149,10 @@ extern "C" {
|
|||
LOG_Z3_optimize_set_params(c, o, p);
|
||||
RESET_ERROR_CODE();
|
||||
param_descrs descrs;
|
||||
to_optimize_ref(o)->collect_param_descrs(descrs);
|
||||
to_optimize_ref(o).collect_param_descrs(descrs);
|
||||
to_params(p)->m_params.validate(descrs);
|
||||
params_ref pr = to_param_ref(p);
|
||||
to_optimize_ref(o)->updt_params(pr);
|
||||
to_optimize_ref(o).updt_params(pr);
|
||||
Z3_CATCH;
|
||||
}
|
||||
|
||||
|
@ -162,7 +162,7 @@ extern "C" {
|
|||
RESET_ERROR_CODE();
|
||||
Z3_param_descrs_ref * d = alloc(Z3_param_descrs_ref);
|
||||
mk_c(c)->save_object(d);
|
||||
to_optimize_ref(o)->collect_param_descrs(d->m_descrs);
|
||||
to_optimize_ref(o).collect_param_descrs(d->m_descrs);
|
||||
Z3_param_descrs r = of_param_descrs(d);
|
||||
RETURN_Z3(r);
|
||||
Z3_CATCH_RETURN(0);
|
||||
|
@ -173,7 +173,7 @@ extern "C" {
|
|||
Z3_TRY;
|
||||
LOG_Z3_optimize_get_lower(c, o, idx);
|
||||
RESET_ERROR_CODE();
|
||||
expr_ref e = to_optimize_ref(o)->get_lower(idx);
|
||||
expr_ref e = to_optimize_ref(o).get_lower(idx);
|
||||
mk_c(c)->save_ast_trail(e);
|
||||
RETURN_Z3(of_expr(e));
|
||||
Z3_CATCH_RETURN(0);
|
||||
|
@ -184,7 +184,7 @@ extern "C" {
|
|||
Z3_TRY;
|
||||
LOG_Z3_optimize_get_upper(c, o, idx);
|
||||
RESET_ERROR_CODE();
|
||||
expr_ref e = to_optimize_ref(o)->get_upper(idx);
|
||||
expr_ref e = to_optimize_ref(o).get_upper(idx);
|
||||
mk_c(c)->save_ast_trail(e);
|
||||
RETURN_Z3(of_expr(e));
|
||||
Z3_CATCH_RETURN(0);
|
||||
|
@ -194,7 +194,7 @@ extern "C" {
|
|||
Z3_TRY;
|
||||
LOG_Z3_optimize_to_string(c, o);
|
||||
RESET_ERROR_CODE();
|
||||
return mk_c(c)->mk_external_string(to_optimize_ref(o)->to_string());
|
||||
return mk_c(c)->mk_external_string(to_optimize_ref(o).to_string());
|
||||
Z3_CATCH_RETURN("");
|
||||
}
|
||||
|
||||
|
@ -204,7 +204,7 @@ extern "C" {
|
|||
RESET_ERROR_CODE();
|
||||
std::ostringstream buffer;
|
||||
param_descrs descrs;
|
||||
to_optimize_ref(d)->collect_param_descrs(descrs);
|
||||
to_optimize_ref(d).collect_param_descrs(descrs);
|
||||
descrs.display(buffer);
|
||||
return mk_c(c)->mk_external_string(buffer.str());
|
||||
Z3_CATCH_RETURN("");
|
||||
|
@ -215,7 +215,7 @@ extern "C" {
|
|||
LOG_Z3_optimize_get_statistics(c, d);
|
||||
RESET_ERROR_CODE();
|
||||
Z3_stats_ref * st = alloc(Z3_stats_ref);
|
||||
to_optimize_ref(d)->collect_statistics(st->m_stats);
|
||||
to_optimize_ref(d).collect_statistics(st->m_stats);
|
||||
mk_c(c)->save_object(st);
|
||||
Z3_stats r = of_stats(st);
|
||||
RETURN_Z3(r);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue