コード例 #1
0
ファイル: api_model.cpp プロジェクト: kayceesrk/Z3
 Z3_bool Z3_API Z3_model_eval(Z3_context c, Z3_model m, Z3_ast t, Z3_bool model_completion, Z3_ast * v) {
     Z3_TRY;
     LOG_Z3_model_eval(c, m, t, model_completion, v);
     if (v) *v = 0;
     RESET_ERROR_CODE();
     CHECK_NON_NULL(m, Z3_FALSE);
     model * _m = to_model_ref(m);
     expr_ref result(mk_c(c)->m());
     _m->eval(to_expr(t), result, model_completion == Z3_TRUE);
     mk_c(c)->save_ast_trail(result.get());
     *v = of_ast(result.get());
     RETURN_Z3_model_eval Z3_TRUE;
     Z3_CATCH_RETURN(0);
 }
コード例 #2
0
ファイル: api_model.cpp プロジェクト: NikolajBjorner/z3
 bool Z3_API Z3_model_eval(Z3_context c, Z3_model m, Z3_ast t, bool model_completion, Z3_ast * v) {
     Z3_TRY;
     LOG_Z3_model_eval(c, m, t, model_completion, v);
     if (v) *v = nullptr;
     RESET_ERROR_CODE();
     CHECK_NON_NULL(m, false);
     CHECK_IS_EXPR(t, false);
     model * _m = to_model_ref(m);
     params_ref p;
     ast_manager& mgr = mk_c(c)->m();
     _m->set_solver(alloc(api::seq_expr_solver, mgr, p));
     expr_ref result(mgr);
     model::scoped_model_completion _scm(*_m, model_completion);
     result = (*_m)(to_expr(t));
     mk_c(c)->save_ast_trail(result.get());
     *v = of_ast(result.get());
     RETURN_Z3_model_eval true;
     Z3_CATCH_RETURN(0);
 }