diff --git a/scripts/mk_nuget_task.py b/scripts/mk_nuget_task.py index 58251c6f8..e6958ddad 100644 --- a/scripts/mk_nuget_task.py +++ b/scripts/mk_nuget_task.py @@ -88,7 +88,11 @@ def mk_targets(source_root): def mk_icon(source_root): mk_dir("out/content") shutil.copy(f"{source_root}/resources/icon.jpg", "out/content/icon.jpg") +<<<<<<< HEAD # shutil.copy(f"{source_root}/src/api/dotnet/README.md", "out/content/README.md") +======= + shutil.copy(f"{source_root}/src/api/dotnet/README.md", "out/content/README.md") +>>>>>>> bdc40b1f5f83cca22dc1d6c5808e935a3b50176c @@ -109,6 +113,7 @@ Linux Dependencies: © Microsoft Corporation. All rights reserved. smt constraint solver theorem prover content/icon.jpg + content/README.md https://github.com/Z3Prover/z3 MIT @@ -118,6 +123,10 @@ Linux Dependencies: + + + + """.format(version, repo, branch, commit, arch) print(contents) sym = "sym." if symbols else "" diff --git a/src/math/lp/int_solver.cpp b/src/math/lp/int_solver.cpp index f760755a2..4a12c79dd 100644 --- a/src/math/lp/int_solver.cpp +++ b/src/math/lp/int_solver.cpp @@ -202,7 +202,12 @@ namespace lp { if (r == lia_move::undef && should_gomory_cut()) r = local_cut(2, gomory_fn); if (r == lia_move::undef) r = int_branch(*this)(); - if (settings().get_cancel_flag()) r = lia_move::undef; + + m_cut_vars.reset(); + if (settings().get_cancel_flag()) + return lia_move::undef; + if (r == lia_move::undef) + r = int_branch(*this)(); return r; } diff --git a/src/sat/smt/euf_solver.cpp b/src/sat/smt/euf_solver.cpp index d0dd0b1c1..69d4d4ba2 100644 --- a/src/sat/smt/euf_solver.cpp +++ b/src/sat/smt/euf_solver.cpp @@ -141,7 +141,7 @@ namespace euf { if (get_config().m_bv_solver == 0) ext = alloc(bv::solver, *this, fid); else if (get_config().m_bv_solver == 1) - throw default_exception("polysat solver is not integrated"); + ext = alloc(polysat::solver, *this, fid); else if (get_config().m_bv_solver == 2) ext = alloc(intblast::solver, *this); else diff --git a/src/sat/smt/intblast_solver.cpp b/src/sat/smt/intblast_solver.cpp index 6ab6e67fd..0a1af129d 100644 --- a/src/sat/smt/intblast_solver.cpp +++ b/src/sat/smt/intblast_solver.cpp @@ -157,7 +157,6 @@ namespace intblast { bool solver::unit_propagate() { return add_bound_axioms() || add_predicate_axioms(); } - void solver::ensure_translated(expr* e) { if (m_translate.get(e->get_id(), nullptr)) return; @@ -306,27 +305,6 @@ namespace intblast { } } - // - // Add ground equalities to ensure the model is valid with respect to the current case splits. - // This may cause more conflicts than necessary. Instead could use intblast on the base level, but using literal - // assignment from complete level. - // E.g., force the solver to completely backtrack, check satisfiability using the assignment obtained under a complete assignment. - // If intblast is SAT, then force the model and literal assignment on the rest of the literals. - // - if (!is_ground(e)) - continue; - euf::enode* n = ctx.get_enode(e); - if (!n) - continue; - if (n == n->get_root()) - continue; - expr* r = n->get_root()->get_expr(); - es.push_back(m.mk_eq(e, r)); - r = es.back(); - if (!visited.is_marked(r) && !is_translated(r)) { - visited.mark(r); - sorted.push_back(r); - } } else if (is_quantifier(e)) { quantifier* q = to_quantifier(e); @@ -392,8 +370,8 @@ namespace intblast { if (nBv2int->get_root() != nxModN->get_root()) { auto a = eq_internalize(nBv2int, nxModN); ctx.mark_relevant(a); - add_unit(a); - return sat::check_result::CR_CONTINUE; + add_unit(a); + return sat::check_result::CR_CONTINUE; } } return sat::check_result::CR_DONE; @@ -505,7 +483,6 @@ namespace intblast { if (has_bv_sort) m_vars.push_back(e); - if (m_is_plugin) { expr* r = m.mk_app(f, m_args); if (has_bv_sort) { @@ -919,7 +896,7 @@ namespace intblast { } bool solver::add_dep(euf::enode* n, top_sort& dep) { - if (!is_app(n->get_expr())) + if (!is_app(n->get_expr())) return false; app* e = to_app(n->get_expr()); if (n->num_args() == 0) { @@ -938,7 +915,6 @@ namespace intblast { void solver::add_value_solver(euf::enode* n, model& mdl, expr_ref_vector& values) { expr* e = n->get_expr(); SASSERT(bv.is_bv(e)); - if (bv.is_numeral(e)) { values.setx(n->get_root_id(), e); return;