Skip to content

Commit f7415bb

Browse files
install importlib-resources for ubuntu doc
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
1 parent 17913f3 commit f7415bb

File tree

3 files changed

+23
-17
lines changed

3 files changed

+23
-17
lines changed

scripts/release.yml

+1
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,7 @@ stages:
133133
pool:
134134
vmImage: "ubuntu-latest"
135135
steps:
136+
- script: pip3 install importlib-resources
136137
- script: sudo apt-get install ocaml opam libgmp-dev
137138
- script: opam init -y
138139
- script: eval `opam config env`; opam install zarith ocamlfind -y

src/math/lp/nla_grobner.cpp

+6-4
Original file line numberDiff line numberDiff line change
@@ -399,7 +399,7 @@ namespace nla {
399399
for (auto eq : m_solver.equations())
400400
if (propagate_linear_equations(*eq))
401401
++changed;
402-
#if 0
402+
#if 1
403403
for (auto eq : m_solver.equations())
404404
if (check_missed_bound(*eq))
405405
return true;
@@ -419,22 +419,24 @@ namespace nla {
419419
if (vars.empty())
420420
di.add(coeff, i);
421421
else {
422-
di.set_value(t, rational::one());
422+
di.set_value(t, coeff);
423423
for (auto v : vars) {
424424
set_var_interval(v, s);
425-
di.mul<dd::w_dep::with_deps>(coeff, s, s);
426-
di.add<dd::w_dep::with_deps>(t, s, t);
425+
di.mul<dd::w_dep::with_deps>(t, s, t);
427426
}
428427
if (m_mon2var.find(vars) != m_mon2var.end()) {
429428
auto v = m_mon2var.find(vars)->second;
430429
set_var_interval(v, u);
430+
di.mul<dd::w_dep::with_deps>(coeff, u, u);
431431
di.intersect<dd::w_dep::with_deps>(t, u, t);
432432
}
433433
di.add<dd::w_dep::with_deps>(i, t, i);
434434
}
435435
}
436436
if (!di.separated_from_zero(i))
437437
return false;
438+
// m_solver.display(verbose_stream() << "missed bound\n", e);
439+
// exit(1);
438440
std::function<void (const lp::explanation&)> f = [this](const lp::explanation& e) {
439441
new_lemma lemma(m_core, "pdd");
440442
lemma &= e;

src/sat/smt/array_axioms.cpp

+16-13
Original file line numberDiff line numberDiff line change
@@ -409,6 +409,11 @@ namespace array {
409409
def1 = a.mk_default(store);
410410
def2 = a.mk_default(store->get_arg(0));
411411

412+
prop |= !ctx.get_enode(def1) || !ctx.get_enode(def2);
413+
414+
euf::enode* ndef1 = e_internalize(def1);
415+
euf::enode* ndef2 = e_internalize(def2);
416+
412417
if (has_unitary_domain(store)) {
413418
def2 = store->get_arg(num_args - 1);
414419
}
@@ -417,8 +422,8 @@ namespace array {
417422
// let A = store(B, i, v)
418423
//
419424
// Add:
420-
// default(A) = ite(epsilon1 = i, v, default(B))
421-
// A[diag(i)] = B[diag(i)]
425+
// default(A) = A[epsilon]
426+
// default(B) = B[epsilon]
422427
//
423428
expr_ref_vector eqs(m);
424429
expr_ref_vector args1(m), args2(m);
@@ -428,22 +433,20 @@ namespace array {
428433
for (unsigned i = 1; i + 1 < num_args; ++i) {
429434
expr* arg = store->get_arg(i);
430435
sort* srt = arg->get_sort();
431-
auto ep = mk_epsilon(srt);
432-
eqs.push_back(m.mk_eq(ep.first, arg));
433-
args1.push_back(m.mk_app(ep.second, arg));
434-
args2.push_back(m.mk_app(ep.second, arg));
436+
auto [ep, d] = mk_epsilon(srt);
437+
eqs.push_back(m.mk_eq(ep, arg));
438+
args1.push_back(ep);
439+
args2.push_back(ep);
435440
}
436-
expr_ref eq(m.mk_and(eqs), m);
437-
def2 = m.mk_ite(eq, store->get_arg(num_args - 1), def2);
438441
app_ref sel1(m), sel2(m);
439442
sel1 = a.mk_select(args1);
440443
sel2 = a.mk_select(args2);
441-
prop |= !ctx.get_enode(sel1) || !ctx.get_enode(sel2);
442-
if (ctx.propagate(e_internalize(sel1), e_internalize(sel2), array_axiom()))
443-
prop = true;
444+
return
445+
ctx.propagate(e_internalize(sel1), ndef1, array_axiom()) ||
446+
ctx.propagate(e_internalize(sel2), ndef2, array_axiom());
444447
}
445-
prop |= !ctx.get_enode(def1) || !ctx.get_enode(def2);
446-
if (ctx.propagate(e_internalize(def1), e_internalize(def2), array_axiom()))
448+
// default(A) == default(B)
449+
if (ctx.propagate(ndef1, ndef2, array_axiom()))
447450
prop = true;
448451
return prop;
449452
}

0 commit comments

Comments
 (0)