Skip to content

Commit 1297eeb

Browse files
Signed-off-by: Nikolaj Bjorner <[email protected]>
1 parent cf6119c commit 1297eeb

File tree

2 files changed

+12
-12
lines changed

2 files changed

+12
-12
lines changed

src/smt/smt_context.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -1774,7 +1774,7 @@ namespace smt {
17741774

17751775
void context::set_conflict(const b_justification & js, literal not_l) {
17761776
if (!inconsistent()) {
1777-
TRACE("set_conflict", display_literal_verbose(tout, not_l); display(tout << " ", js); );
1777+
TRACE("set_conflict", display_literal_verbose(tout << m_scope_lvl << " ", not_l); display(tout << " ", js); );
17781778
m_conflict = js;
17791779
m_not_l = not_l;
17801780
}

src/smt/theory_seq.cpp

+11-11
Original file line numberDiff line numberDiff line change
@@ -340,6 +340,7 @@ bool theory_seq::reduce_length_eq() {
340340
context& ctx = get_context();
341341
int start = ctx.get_random_value();
342342

343+
TRACE("seq", tout << "reduce length eq\n";);
343344
for (unsigned i = 0; !ctx.inconsistent() && i < m_eqs.size(); ++i) {
344345
eq const& e = m_eqs[(i + start) % m_eqs.size()];
345346
if (reduce_length_eq(e.ls(), e.rs(), e.dep())) {
@@ -2688,8 +2689,8 @@ bool theory_seq::reduce_length_eq(expr_ref_vector const& ls, expr_ref_vector con
26882689
rhs.append(rs.size()-1, rs.c_ptr());
26892690
SASSERT(!lhs.empty() || !rhs.empty());
26902691
deps = mk_join(deps, lits);
2692+
TRACE("seq", tout << "Propagate equal lengths " << l << " " << r << "\n" << "ls: " << ls << "\nrs: " << rs << "\n";);
26912693
m_eqs.push_back(eq(m_eq_id++, lhs, rhs, deps));
2692-
TRACE("seq", tout << "Propagate equal lengths " << l << " " << r << "\n";);
26932694
propagate_eq(deps, lits, l, r, true);
26942695
return true;
26952696
}
@@ -2762,10 +2763,6 @@ bool theory_seq::reduce_length(unsigned i, unsigned j, bool front, expr_ref_vect
27622763
expr_ref lenr = mk_len(r);
27632764
literal lit = mk_eq(lenl, lenr, false);
27642765
if (ctx.get_assignment(lit) == l_true) {
2765-
// expr_ref len_eq(m.mk_eq(lenl, lenr), m);
2766-
// if (ctx.find_assignment(len_eq) == l_true) {
2767-
// literal lit = mk_eq(lenl, lenr, false);
2768-
// literal_vector lits;
27692766
expr_ref_vector lhs(m), rhs(m);
27702767
lhs.append(l2, ls2);
27712768
rhs.append(r2, rs2);
@@ -2776,7 +2773,6 @@ bool theory_seq::reduce_length(unsigned i, unsigned j, bool front, expr_ref_vect
27762773
return true;
27772774
}
27782775
else {
2779-
//TRACE("seq", tout << "Assignment: " << lenl << " = " << lenr << " " << ctx.get_assignment(lit) << "\n";);
27802776
return false;
27812777
}
27822778
}
@@ -2909,13 +2905,16 @@ bool theory_seq::get_length(expr* e, expr_ref& len, literal_vector& lits) {
29092905
TRACE("seq", ctx.display_literals_verbose(tout, 2, _lits); tout << "\n";);
29102906
}
29112907
else if (is_skolem(m_tail, e)) {
2908+
// e = tail(s, l), len(s) > l =>
2909+
// len(tail(s, l)) = len(s) - l - 1
29122910
s = to_app(e)->get_arg(0);
29132911
l = to_app(e)->get_arg(1);
29142912
expr_ref len_s = mk_len(s);
2915-
literal len_s_ge_l = mk_simplified_literal(m_autil.mk_ge(mk_sub(len_s, l), m_autil.mk_int(0)));
2916-
if (ctx.get_assignment(len_s_ge_l) == l_true) {
2917-
len = mk_sub(len_s, l);
2918-
lits.push_back(len_s_ge_l);
2913+
literal len_s_gt_l = mk_simplified_literal(m_autil.mk_ge(mk_sub(len_s, l), m_autil.mk_int(1)));
2914+
if (ctx.get_assignment(len_s_gt_l) == l_true) {
2915+
len = mk_sub(len_s, mk_sub(l, m_autil.mk_int(1)));
2916+
TRACE("seq", tout << len_s << " " << len << " " << len_s_gt_l << "\n";);
2917+
lits.push_back(len_s_gt_l);
29192918
return true;
29202919
}
29212920
}
@@ -4952,7 +4951,7 @@ void theory_seq::add_at_axiom(expr* e) {
49524951
es.push_back(m_util.str.mk_unit(mk_nth(s, m_autil.mk_int(j))));
49534952
}
49544953
nth = es.back();
4955-
es.push_back(mk_skolem(m_tail, s, m_autil.mk_int(k)));
4954+
es.push_back(mk_skolem(m_tail, s, i));
49564955
add_axiom(~i_ge_0, i_ge_len_s, mk_seq_eq(s, m_util.str.mk_concat(es)));
49574956
add_axiom(~i_ge_0, i_ge_len_s, mk_seq_eq(nth, e));
49584957
}
@@ -4987,6 +4986,7 @@ void theory_seq::add_nth_axiom(expr* e) {
49874986
lit => s = (nth s 0) ++ (nth s 1) ++ ... ++ (nth s idx) ++ (tail s idx)
49884987
*/
49894988
void theory_seq::ensure_nth(literal lit, expr* s, expr* idx) {
4989+
TRACE("seq", tout << "ensure-nth: " << lit << " " << mk_pp(s, m) << " " << mk_pp(idx, m) << "\n";);
49904990
rational r;
49914991
SASSERT(get_context().get_assignment(lit) == l_true);
49924992
VERIFY(m_autil.is_numeral(idx, r) && r.is_unsigned());

0 commit comments

Comments
 (0)