Skip to content

Commit 6f6c8d7

Browse files
fix #4216
Signed-off-by: Nikolaj Bjorner <[email protected]>
1 parent f2449df commit 6f6c8d7

File tree

2 files changed

+17
-13
lines changed

2 files changed

+17
-13
lines changed

src/smt/smt_consequences.cpp

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -100,20 +100,28 @@ namespace smt {
100100

101101
void context::justify(literal lit, index_set& s) {
102102
(void)m;
103+
auto add_antecedent = [&](literal l) {
104+
CTRACE("context", !m_antecedents.contains(l.var()),
105+
tout << "untracked literal: " << l << " "
106+
<< mk_pp(bool_var2expr(l.var()), m) << "\n";);
107+
if (m_antecedents.contains(l.var())) {
108+
s |= m_antecedents[l.var()];
109+
}
110+
};
103111
b_justification js = get_justification(lit.var());
104112
switch (js.get_kind()) {
105113
case b_justification::CLAUSE: {
106114
clause * cls = js.get_clause();
107115
if (!cls) break;
108116
for (literal lit2 : *cls) {
109117
if (lit2.var() != lit.var()) {
110-
s |= m_antecedents.find(lit2.var());
118+
add_antecedent(lit2);
111119
}
112120
}
113121
break;
114122
}
115123
case b_justification::BIN_CLAUSE: {
116-
s |= m_antecedents.find(js.get_literal().var());
124+
add_antecedent(js.get_literal());
117125
break;
118126
}
119127
case b_justification::AXIOM: {
@@ -123,10 +131,7 @@ namespace smt {
123131
literal_vector literals;
124132
m_conflict_resolution->justification2literals(js.get_justification(), literals);
125133
for (unsigned j = 0; j < literals.size(); ++j) {
126-
if (!m_antecedents.contains(literals[j].var())) {
127-
TRACE("context", tout << literals[j] << " " << mk_pp(bool_var2expr(literals[j].var()), m) << "\n";);
128-
}
129-
s |= m_antecedents.find(literals[j].var());
134+
add_antecedent(literals[j]);
130135
}
131136
break;
132137
}

src/smt/theory_arith_eq.h

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ namespace smt {
248248
//
249249
// x1 <= k1 x1 >= k1, x2 <= x1 + k2 x2 >= x1 + k2
250250
//
251-
TRACE("arith_eq_propagation", tout << "fixed\n";);
251+
TRACE("arith_eq", tout << "fixed\n";);
252252
lower(x2)->push_justification(ante, numeral::zero(), proofs_enabled());
253253
upper(x2)->push_justification(ante, numeral::zero(), proofs_enabled());
254254
m_stats.m_fixed_eqs++;
@@ -350,14 +350,13 @@ namespace smt {
350350
antecedents.num_params(), antecedents.params("eq-propagate")));
351351
TRACE("arith_eq", tout << "detected equality: #" << _x->get_owner_id() << " = #" << _y->get_owner_id() << "\n";
352352
display_var(tout, x);
353-
display_var(tout, y););
354-
TRACE("arith_eq_propagation",
355-
for (unsigned i = 0; i < lits.size(); ++i) {
356-
ctx.display_detailed_literal(tout, lits[i]);
353+
display_var(tout, y);
354+
for (literal lit : lits) {
355+
ctx.display_detailed_literal(tout, lit);
357356
tout << "\n";
358357
}
359-
for (unsigned i = 0; i < eqs.size(); ++i) {
360-
tout << mk_pp(eqs[i].first->get_owner(), m) << " = " << mk_pp(eqs[i].second->get_owner(), m) << "\n";
358+
for (auto const& p : eqs) {
359+
tout << mk_pp(p.first->get_owner(), m) << " = " << mk_pp(p.second->get_owner(), m) << "\n";
361360
}
362361
tout << " ==> ";
363362
tout << mk_pp(_x->get_owner(), m) << " = " << mk_pp(_y->get_owner(), m) << "\n";

0 commit comments

Comments
 (0)