mirror of
https://github.com/Z3Prover/z3
synced 2025-04-15 21:38:44 +00:00
fix #6260
This commit is contained in:
parent
5014b1a34d
commit
a4ea281602
|
@ -61,8 +61,7 @@ namespace dd {
|
||||||
|
|
||||||
solver::solver(reslimit& lim, pdd_manager& m) :
|
solver::solver(reslimit& lim, pdd_manager& m) :
|
||||||
m(m),
|
m(m),
|
||||||
m_limit(lim),
|
m_limit(lim)
|
||||||
m_conflict(nullptr)
|
|
||||||
{}
|
{}
|
||||||
|
|
||||||
solver::~solver() {
|
solver::~solver() {
|
||||||
|
@ -179,9 +178,8 @@ namespace dd {
|
||||||
set[i]->set_index(j++);
|
set[i]->set_index(j++);
|
||||||
}
|
}
|
||||||
~scoped_update() {
|
~scoped_update() {
|
||||||
for (; i < sz; ++i) {
|
for (; i < sz; ++i)
|
||||||
nextj();
|
nextj();
|
||||||
}
|
|
||||||
set.shrink(j);
|
set.shrink(j);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -191,23 +189,24 @@ namespace dd {
|
||||||
equation& target = *set[sr.i];
|
equation& target = *set[sr.i];
|
||||||
bool changed_leading_term = false;
|
bool changed_leading_term = false;
|
||||||
bool simplified = true;
|
bool simplified = true;
|
||||||
simplified = !done() && simplifier(target, changed_leading_term);
|
simplified = !done() && simplifier(target, changed_leading_term);
|
||||||
|
|
||||||
|
|
||||||
if (simplified && is_trivial(target)) {
|
if (simplified && is_trivial(target))
|
||||||
retire(&target);
|
retire(&target);
|
||||||
}
|
|
||||||
else if (simplified && check_conflict(target)) {
|
else if (simplified && check_conflict(target)) {
|
||||||
// pushed to solved
|
// pushed to solved
|
||||||
}
|
}
|
||||||
else if (simplified && changed_leading_term) {
|
else if (simplified && changed_leading_term) {
|
||||||
push_equation(to_simplify, target);
|
if (&m_to_simplify == &set)
|
||||||
if (!m_var2level.empty()) {
|
sr.nextj();
|
||||||
|
else
|
||||||
|
push_equation(to_simplify, target);
|
||||||
|
if (!m_var2level.empty())
|
||||||
m_levelp1 = std::max(m_var2level[target.poly().var()]+1, m_levelp1);
|
m_levelp1 = std::max(m_var2level[target.poly().var()]+1, m_levelp1);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
sr.nextj();
|
sr.nextj();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -121,7 +121,7 @@ private:
|
||||||
vector<std::tuple<unsigned, pdd, u_dependency*>> m_subst;
|
vector<std::tuple<unsigned, pdd, u_dependency*>> m_subst;
|
||||||
mutable u_dependency_manager m_dep_manager;
|
mutable u_dependency_manager m_dep_manager;
|
||||||
equation_vector m_all_eqs;
|
equation_vector m_all_eqs;
|
||||||
equation* m_conflict;
|
equation* m_conflict = nullptr;
|
||||||
bool m_too_complex;
|
bool m_too_complex;
|
||||||
public:
|
public:
|
||||||
solver(reslimit& lim, pdd_manager& m);
|
solver(reslimit& lim, pdd_manager& m);
|
||||||
|
|
Loading…
Reference in a new issue