mirror of
https://github.com/Z3Prover/z3
synced 2025-04-13 20:38:43 +00:00
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
e1d2b88a82
commit
780346c7ca
|
@ -115,9 +115,23 @@ public:
|
|||
}
|
||||
if (u.is_seq(s, ch)) {
|
||||
expr* v = m_model.get_fresh_value(ch);
|
||||
if (!v) return nullptr;
|
||||
if (v) {
|
||||
return u.str.mk_unit(v);
|
||||
}
|
||||
else {
|
||||
v = u.str.mk_unit(m_model.get_some_value(ch));
|
||||
expr* uniq = nullptr;
|
||||
if (m_unique_sequences.find(s, uniq)) {
|
||||
uniq = u.str.mk_concat(v, uniq);
|
||||
}
|
||||
else {
|
||||
uniq = v;
|
||||
}
|
||||
m_trail.push_back(uniq);
|
||||
m_unique_sequences.insert(s, uniq);
|
||||
return uniq;
|
||||
}
|
||||
}
|
||||
UNREACHABLE();
|
||||
return nullptr;
|
||||
}
|
||||
|
|
|
@ -46,7 +46,9 @@ expr_ref seq_skolem::mk(symbol const& s, expr* e1, expr* e2, expr* e3, expr* e4,
|
|||
if (!range) {
|
||||
range = m.get_sort(e1);
|
||||
}
|
||||
return expr_ref(seq.mk_skolem(s, len, es, range), m);
|
||||
expr_ref result(seq.mk_skolem(s, len, es, range), m);
|
||||
m_rewrite(result);
|
||||
return result;
|
||||
}
|
||||
|
||||
expr_ref seq_skolem::mk_max_unfolding_depth(unsigned depth) {
|
||||
|
@ -113,13 +115,11 @@ decompose_main:
|
|||
head = seq.str.mk_unit(seq.str.mk_nth_i(s, idx));
|
||||
tail = mk(m_tail, s, idx);
|
||||
m_rewrite(head);
|
||||
m_rewrite(tail);
|
||||
}
|
||||
else {
|
||||
head = seq.str.mk_unit(seq.str.mk_nth_i(e, a.mk_int(0)));
|
||||
tail = mk(m_tail, e, a.mk_int(0));
|
||||
m_rewrite(head);
|
||||
m_rewrite(tail);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue