3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-06-28 03:18:49 +00:00

use expr id when doing model construction and not internal id

This commit is contained in:
CEisenhofer 2026-05-28 18:02:41 +02:00
parent 8f74296cf2
commit 7d7199dec6
4 changed files with 36 additions and 26 deletions

View file

@ -602,6 +602,12 @@ namespace seq {
void add_side_constraint(constraint const& ic) {
if (ic.fml.m().is_true(ic.fml))
return;
expr* a, * b;
if (ic.fml.m().is_and(ic.fml, a, b)) {
add_side_constraint(constraint(a, ic.dep, ic.fml.m()));
add_side_constraint(constraint(b, ic.dep, ic.fml.m()));
return;
}
m_side_constraints.push_back(ic);
}
vector<constraint> const& side_constraints() const { return m_side_constraints; }

View file

@ -168,7 +168,7 @@ namespace seq {
return val.to_string();
if (!is_app(e)) {
std::ostringstream os;
os << mk_pp(e, m);
os << mk_bounded_pp(e, m);
return dot_html_escape(os.str());
}
app* a = to_app(e);
@ -241,7 +241,9 @@ namespace seq {
if (names.contains(x)) {
return "|" + names[x] + "|";
}
std::string s = dot_html_escape(to_app(x)->get_decl()->get_name().str()) + std::to_string(next_id++);
std::stringstream ss;
ss << mk_bounded_pp(x, m);
std::string s = ss.str();
names.insert(x, s);
return "|" + s + "|";
}
@ -254,7 +256,9 @@ namespace seq {
return dot_html_escape(a->get_decl()->get_name().str());
if (names.contains(e))
return names[e];
std::string s = dot_html_escape(to_app(e)->get_decl()->get_name().str()) + std::to_string(next_id++);
std::stringstream ss;
ss << mk_bounded_pp(e, m);
std::string s = dot_html_escape(ss.str());
names.insert(e, s);
return s;
@ -462,7 +466,9 @@ namespace seq {
else if (names.contains(e))
result += names[e];
else {
std::string s = dot_html_escape(to_app(e)->get_decl()->get_name().str()) + std::to_string(next_id++);
std::stringstream ss;
ss << mk_bounded_pp(e, m);
std::string s = dot_html_escape(ss.str());
names.insert(e, s);
result += s;
}