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;