Skip to content

Commit 16d4ccd

Browse files
na
Signed-off-by: Nikolaj Bjorner <[email protected]>
1 parent 18b8089 commit 16d4ccd

File tree

3 files changed

+28
-10
lines changed

3 files changed

+28
-10
lines changed

scripts/mk_nuget_release.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -171,8 +171,8 @@ def sign_nuget_package():
171171
output_path = os.path.abspath("out").replace("\\","\\\\")
172172
with open(input_file, 'w') as f:
173173
f.write(nuget_sign_input % (output_path, output_path, release_version, release_version))
174-
subprocess.call(["EsrpClient.exe", "sign", "-a", "authorization.json", "-p", "policy.json", "-i", input_file, "-o", "out\\diagnostics.json"])
175-
174+
r = subprocess.call(["EsrpClient.exe", "sign", "-a", "authorization.json", "-p", "policy.json", "-i", input_file, "-o", "out\\diagnostics.json"], shell=True, stderr=subprocess.STDOUT)
175+
print(r)
176176

177177
def main():
178178
mk_dir("packages")

src/ast/rewriter/array_rewriter.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,7 @@ br_status array_rewriter::mk_select_core(unsigned num_args, expr * const * args,
241241
}
242242

243243
expr* c, *th, *el;
244-
if (m_expand_select_ite && m().is_ite(args[0], c, th, el)) {
244+
if (m().is_ite(args[0], c, th, el) && (m_expand_select_ite || (th->get_ref_count() == 1 || el->get_ref_count() == 1))) {
245245
ptr_vector<expr> args1, args2;
246246
args1.push_back(th);
247247
args1.append(num_args-1, args + 1);

src/tactic/fd_solver/smtfd_solver.cpp

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -451,7 +451,6 @@ namespace smtfd {
451451
ast_manager& m;
452452
smtfd_abs& m_abs;
453453
plugin_context& m_context;
454-
model_ref m_model;
455454
expr_ref_vector m_values;
456455
ast_ref_vector m_pinned;
457456
expr_ref_vector m_args, m_vargs;
@@ -586,7 +585,6 @@ namespace smtfd {
586585
m_tables.reset();
587586
m_ast2table.reset();
588587
m_values.reset();
589-
m_model = nullptr;
590588
}
591589
};
592590

@@ -696,7 +694,7 @@ namespace smtfd {
696694
bool sort_covered(sort* s) override { return m.is_bool(s); }
697695
unsigned max_rounds() override { return 0; }
698696
void populate_model(model_ref& mdl, expr_ref_vector const& core) override { }
699-
expr_ref model_value_core(expr* t) override { return m.is_bool(t) ? (*m_model)(m_abs.abs(t)) : expr_ref(m); }
697+
expr_ref model_value_core(expr* t) override { return m.is_bool(t) ? m_context.get_model()(m_abs.abs(t)) : expr_ref(m); }
700698
expr_ref model_value_core(sort* s) override { return m.is_bool(s) ? expr_ref(m.mk_false(), m) : expr_ref(m); }
701699
};
702700

@@ -1010,6 +1008,9 @@ namespace smtfd {
10101008
if (m_context.at_max()) {
10111009
break;
10121010
}
1011+
if (m.get_sort(t) != m.get_sort(fA.m_t->get_arg(0))) {
1012+
continue;
1013+
}
10131014
if (!tT.find(fA, fT) || (value_of(fA) != value_of(fT) && !eq(m_vargs, fA))) {
10141015
TRACE("smtfd", tout << "found: " << tT.find(fA, fT) << "\n";);
10151016
add_select_store_axiom(t, fA);
@@ -1023,7 +1024,7 @@ namespace smtfd {
10231024
if (m_context.at_max()) {
10241025
break;
10251026
}
1026-
if (!tA.find(fT, fA)) {
1027+
if (!tA.find(fT, fA) && m.get_sort(t) == m.get_sort(fT.m_t->get_arg(0))) {
10271028
TRACE("smtfd", tout << "not found\n";);
10281029
add_select_store_axiom(t, fT);
10291030
++r;
@@ -1044,6 +1045,8 @@ namespace smtfd {
10441045
for (expr* arg : *f.m_t) {
10451046
m_args.push_back(arg);
10461047
}
1048+
SASSERT(m.get_sort(t) == m.get_sort(a));
1049+
TRACE("smtfd", tout << mk_bounded_pp(t, m, 2) << " " << mk_bounded_pp(f.m_t, m, 2) << "\n";);
10471050
expr_ref eq = mk_eq_idxs(t, f.m_t);
10481051
m_args[0] = t;
10491052
expr_ref sel1(m_autil.mk_select(m_args), m);
@@ -1349,14 +1352,17 @@ namespace smtfd {
13491352
if (!m_model->eval_expr(q->get_expr(), tmp, true)) {
13501353
return l_undef;
13511354
}
1355+
if (m.is_true(tmp)) {
1356+
return l_false;
1357+
}
13521358

13531359
m_solver->push();
13541360
expr_ref_vector vars(m), vals(m);
13551361
vars.resize(sz, nullptr);
13561362
vals.resize(sz, nullptr);
13571363
for (unsigned i = 0; i < sz; ++i) {
13581364
sort* s = q->get_decl_sort(i);
1359-
vars[i] = m.mk_fresh_const(q->get_decl_name(i), s);
1365+
vars[i] = m.mk_fresh_const(q->get_decl_name(i), s, false);
13601366
if (m_model->has_uninterpreted_sort(s)) {
13611367
restrict_to_universe(vars.get(i), m_model->get_universe(s));
13621368
}
@@ -1381,6 +1387,7 @@ namespace smtfd {
13811387
}
13821388
}
13831389
m_solver->get_model(mdl);
1390+
IF_VERBOSE(1, verbose_stream() << *mdl << "\n");
13841391
for (unsigned i = 0; i < sz; ++i) {
13851392
app* v = to_app(vars.get(i));
13861393
func_decl* f = v->get_decl();
@@ -1389,6 +1396,7 @@ namespace smtfd {
13891396
r = l_undef;
13901397
break;
13911398
}
1399+
13921400
expr* t = nullptr;
13931401
if (m_val2term.find(val, t)) {
13941402
val = t;
@@ -1397,6 +1405,7 @@ namespace smtfd {
13971405
}
13981406
if (r == l_true) {
13991407
body = subst(q->get_expr(), vals.size(), vals.c_ptr());
1408+
m_context.rewrite(body);
14001409
if (is_forall(q)) {
14011410
body = m.mk_implies(q, body);
14021411
}
@@ -1458,6 +1467,10 @@ namespace smtfd {
14581467
bool check_quantifiers(expr_ref_vector const& core) {
14591468
bool result = true;
14601469
init_val2term(core);
1470+
IF_VERBOSE(1,
1471+
for (expr* c : core) {
1472+
verbose_stream() << "core: " << mk_bounded_pp(c, m, 2) << "\n";
1473+
});
14611474
for (expr* c : core) {
14621475
lbool r = l_false;
14631476
if (is_forall(c)) {
@@ -1548,6 +1561,8 @@ namespace smtfd {
15481561
tout << mk_bounded_pp(assumptions[i], m, 3) << "\n";
15491562
}
15501563
display(tout << asms << "\n"););
1564+
TRACE("smtfd_verbose", m_fd_sat_solver->display(tout););
1565+
15511566
SASSERT(asms.contains(m_toggle));
15521567
m_fd_sat_solver->assert_expr(m_toggle);
15531568
lbool r = m_fd_sat_solver->check_sat(asms);
@@ -1653,10 +1668,12 @@ namespace smtfd {
16531668
return l_false;
16541669
}
16551670
for (expr* f : m_context) {
1656-
IF_VERBOSE(10, verbose_stream() << "lemma: " << expr_ref(f, m) << "\n");
1657-
assert_fd(f);
1671+
IF_VERBOSE(10, verbose_stream() << "lemma: " << f->get_id() << ": " << expr_ref(f, m) << "\n");
1672+
assert_expr_core(f);
16581673
}
1674+
flush_assertions();
16591675
m_stats.m_num_mbqi += m_context.size();
1676+
IF_VERBOSE(10, verbose_stream() << "context size: " << m_context.size() << "\n");
16601677
return m_context.empty() ? is_decided : l_undef;
16611678
}
16621679

@@ -1887,6 +1904,7 @@ namespace smtfd {
18871904
case l_undef:
18881905
break;
18891906
case l_false:
1907+
break;
18901908
r = check_smt(core);
18911909
switch (r) {
18921910
case l_true:

0 commit comments

Comments
 (0)