mirror of
https://github.com/Z3Prover/z3
synced 2025-04-23 09:05:31 +00:00
track assumptions when parsing into a solver. This enables solver.from_file/solver.from_string to support assumptions/cores #6587
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
3dc91de531
commit
9ce5fe707d
4 changed files with 17 additions and 13 deletions
|
@ -128,7 +128,8 @@ extern "C" {
|
|||
|
||||
static Z3_ast_vector Z3_parser_context_parse_stream(Z3_context c, scoped_ptr<cmd_context>& ctx, bool owned, std::istream& is) {
|
||||
Z3_TRY;
|
||||
Z3_ast_vector_ref * v = alloc(Z3_ast_vector_ref, *mk_c(c), mk_c(c)->m());
|
||||
ast_manager& m = mk_c(c)->m();
|
||||
Z3_ast_vector_ref * v = alloc(Z3_ast_vector_ref, *mk_c(c), m);
|
||||
mk_c(c)->save_object(v);
|
||||
std::stringstream errstrm;
|
||||
ctx->set_regular_stream(errstrm);
|
||||
|
@ -147,8 +148,11 @@ extern "C" {
|
|||
SET_ERROR_CODE(Z3_PARSER_ERROR, errstrm.str());
|
||||
return of_ast_vector(v);
|
||||
}
|
||||
for (expr* e : ctx->tracked_assertions())
|
||||
v->m_ast_vector.push_back(e);
|
||||
for (auto const& [asr, an] : ctx->tracked_assertions())
|
||||
if (an)
|
||||
v->m_ast_vector.push_back(m.mk_implies(an, asr));
|
||||
else
|
||||
v->m_ast_vector.push_back(asr);
|
||||
ctx->reset_tracked_assertions();
|
||||
return of_ast_vector(v);
|
||||
Z3_CATCH_RETURN(nullptr);
|
||||
|
|
|
@ -314,8 +314,11 @@ extern "C" {
|
|||
bool initialized = to_solver(s)->m_solver.get() != nullptr;
|
||||
if (!initialized)
|
||||
init_solver(c, s);
|
||||
for (expr* e : ctx->tracked_assertions())
|
||||
to_solver(s)->assert_expr(e);
|
||||
for (auto const& [asr, an] : ctx->tracked_assertions())
|
||||
if (an)
|
||||
to_solver(s)->assert_expr(asr, an);
|
||||
else
|
||||
to_solver(s)->assert_expr(asr);
|
||||
ctx->reset_tracked_assertions();
|
||||
to_solver_ref(s)->set_model_converter(ctx->get_model_converter());
|
||||
auto* ctx_s = ctx->get_solver();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue