mirror of
https://github.com/Z3Prover/z3
synced 2025-08-07 11:41:22 +00:00
merge again
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
commit
172d0ea685
4 changed files with 19 additions and 29 deletions
|
@ -88,7 +88,11 @@ def mk_targets(source_root):
|
||||||
def mk_icon(source_root):
|
def mk_icon(source_root):
|
||||||
mk_dir("out/content")
|
mk_dir("out/content")
|
||||||
shutil.copy(f"{source_root}/resources/icon.jpg", "out/content/icon.jpg")
|
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")
|
||||||
|
=======
|
||||||
|
shutil.copy(f"{source_root}/src/api/dotnet/README.md", "out/content/README.md")
|
||||||
|
>>>>>>> bdc40b1f5f83cca22dc1d6c5808e935a3b50176c
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -109,6 +113,7 @@ Linux Dependencies:
|
||||||
<copyright>© Microsoft Corporation. All rights reserved.</copyright>
|
<copyright>© Microsoft Corporation. All rights reserved.</copyright>
|
||||||
<tags>smt constraint solver theorem prover</tags>
|
<tags>smt constraint solver theorem prover</tags>
|
||||||
<icon>content/icon.jpg</icon>
|
<icon>content/icon.jpg</icon>
|
||||||
|
<readme>content/README.md</readme>
|
||||||
<projectUrl>https://github.com/Z3Prover/z3</projectUrl>
|
<projectUrl>https://github.com/Z3Prover/z3</projectUrl>
|
||||||
<license type="expression">MIT</license>
|
<license type="expression">MIT</license>
|
||||||
<repository type="git" url="{1}" branch="{2}" commit="{3}" />
|
<repository type="git" url="{1}" branch="{2}" commit="{3}" />
|
||||||
|
@ -118,6 +123,10 @@ Linux Dependencies:
|
||||||
<group targetFramework=".netstandard2.0" />
|
<group targetFramework=".netstandard2.0" />
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</metadata>
|
</metadata>
|
||||||
|
<files>
|
||||||
|
<file src="content/README.md" target="content/README.md"/>
|
||||||
|
<file src="content/icon.jpg" target="content/icon.jpg"/>
|
||||||
|
</files>
|
||||||
</package>""".format(version, repo, branch, commit, arch)
|
</package>""".format(version, repo, branch, commit, arch)
|
||||||
print(contents)
|
print(contents)
|
||||||
sym = "sym." if symbols else ""
|
sym = "sym." if symbols else ""
|
||||||
|
|
|
@ -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 && should_gomory_cut()) r = local_cut(2, gomory_fn);
|
||||||
|
|
||||||
if (r == lia_move::undef) r = int_branch(*this)();
|
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;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -141,7 +141,7 @@ namespace euf {
|
||||||
if (get_config().m_bv_solver == 0)
|
if (get_config().m_bv_solver == 0)
|
||||||
ext = alloc(bv::solver, *this, fid);
|
ext = alloc(bv::solver, *this, fid);
|
||||||
else if (get_config().m_bv_solver == 1)
|
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)
|
else if (get_config().m_bv_solver == 2)
|
||||||
ext = alloc(intblast::solver, *this);
|
ext = alloc(intblast::solver, *this);
|
||||||
else
|
else
|
||||||
|
|
|
@ -157,7 +157,6 @@ namespace intblast {
|
||||||
bool solver::unit_propagate() {
|
bool solver::unit_propagate() {
|
||||||
return add_bound_axioms() || add_predicate_axioms();
|
return add_bound_axioms() || add_predicate_axioms();
|
||||||
}
|
}
|
||||||
|
|
||||||
void solver::ensure_translated(expr* e) {
|
void solver::ensure_translated(expr* e) {
|
||||||
if (m_translate.get(e->get_id(), nullptr))
|
if (m_translate.get(e->get_id(), nullptr))
|
||||||
return;
|
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)) {
|
else if (is_quantifier(e)) {
|
||||||
quantifier* q = to_quantifier(e);
|
quantifier* q = to_quantifier(e);
|
||||||
|
@ -392,8 +370,8 @@ namespace intblast {
|
||||||
if (nBv2int->get_root() != nxModN->get_root()) {
|
if (nBv2int->get_root() != nxModN->get_root()) {
|
||||||
auto a = eq_internalize(nBv2int, nxModN);
|
auto a = eq_internalize(nBv2int, nxModN);
|
||||||
ctx.mark_relevant(a);
|
ctx.mark_relevant(a);
|
||||||
add_unit(a);
|
add_unit(a);
|
||||||
return sat::check_result::CR_CONTINUE;
|
return sat::check_result::CR_CONTINUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return sat::check_result::CR_DONE;
|
return sat::check_result::CR_DONE;
|
||||||
|
@ -505,7 +483,6 @@ namespace intblast {
|
||||||
|
|
||||||
if (has_bv_sort)
|
if (has_bv_sort)
|
||||||
m_vars.push_back(e);
|
m_vars.push_back(e);
|
||||||
|
|
||||||
if (m_is_plugin) {
|
if (m_is_plugin) {
|
||||||
expr* r = m.mk_app(f, m_args);
|
expr* r = m.mk_app(f, m_args);
|
||||||
if (has_bv_sort) {
|
if (has_bv_sort) {
|
||||||
|
@ -919,7 +896,7 @@ namespace intblast {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool solver::add_dep(euf::enode* n, top_sort<euf::enode>& dep) {
|
bool solver::add_dep(euf::enode* n, top_sort<euf::enode>& dep) {
|
||||||
if (!is_app(n->get_expr()))
|
if (!is_app(n->get_expr()))
|
||||||
return false;
|
return false;
|
||||||
app* e = to_app(n->get_expr());
|
app* e = to_app(n->get_expr());
|
||||||
if (n->num_args() == 0) {
|
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) {
|
void solver::add_value_solver(euf::enode* n, model& mdl, expr_ref_vector& values) {
|
||||||
expr* e = n->get_expr();
|
expr* e = n->get_expr();
|
||||||
SASSERT(bv.is_bv(e));
|
SASSERT(bv.is_bv(e));
|
||||||
|
|
||||||
if (bv.is_numeral(e)) {
|
if (bv.is_numeral(e)) {
|
||||||
values.setx(n->get_root_id(), e);
|
values.setx(n->get_root_id(), e);
|
||||||
return;
|
return;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue