Skip to content

Commit 9a516e5

Browse files
fix str.at rewrite
Signed-off-by: Nikolaj Bjorner <[email protected]>
1 parent a8e7074 commit 9a516e5

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

src/ast/rewriter/seq_rewriter.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1007,9 +1007,13 @@ br_status seq_rewriter::mk_seq_at(expr* a, expr* b, expr_ref& result) {
10071007
unsigned i = 0;
10081008
for (; i < m_lhs.size(); ++i) {
10091009
expr* lhs = m_lhs.get(i);
1010-
if (lens.contains(lhs)) {
1010+
if (lens.contains(lhs) && !r.is_neg()) {
10111011
lens.erase(lhs);
10121012
}
1013+
else if (m_util.str.is_unit(lhs) && r.is_zero() && lens.empty()) {
1014+
result = lhs;
1015+
return BR_REWRITE1;
1016+
}
10131017
else if (m_util.str.is_unit(lhs) && r.is_pos()) {
10141018
r -= rational(1);
10151019
}

src/nlsat/nlsat_solver.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1586,6 +1586,9 @@ namespace nlsat {
15861586
check_lemma(c->size(), c->c_ptr(), false, nullptr);
15871587
}
15881588
}
1589+
for (clause* c : m_learned) {
1590+
IF_VERBOSE(0, display(verbose_stream() << "KEEP: ", c->size(), c->c_ptr()) << "\n");
1591+
}
15891592
assumptions.reset();
15901593
assumptions.append(result);
15911594
return r;

0 commit comments

Comments
 (0)