mirror of
https://github.com/Z3Prover/z3
synced 2025-06-27 00:18:45 +00:00
sort muxes
This commit is contained in:
parent
7d47e45c6b
commit
a634876180
2 changed files with 9 additions and 5 deletions
|
@ -57,6 +57,8 @@ public:
|
||||||
|
|
||||||
void execute(cmd_context & ctx) override {
|
void execute(cmd_context & ctx) override {
|
||||||
model_ref md;
|
model_ref md;
|
||||||
|
if (ctx.ignore_check())
|
||||||
|
return;
|
||||||
if (!ctx.is_model_available(md))
|
if (!ctx.is_model_available(md))
|
||||||
throw cmd_exception("model is not available");
|
throw cmd_exception("model is not available");
|
||||||
if (!m_target)
|
if (!m_target)
|
||||||
|
|
|
@ -4192,17 +4192,19 @@ namespace sat {
|
||||||
m_ext->find_mutexes(_lits, mutexes);
|
m_ext->find_mutexes(_lits, mutexes);
|
||||||
}
|
}
|
||||||
unsigned_vector ps;
|
unsigned_vector ps;
|
||||||
for (literal lit : _lits) {
|
for (literal lit : _lits)
|
||||||
ps.push_back(lit.index());
|
ps.push_back(lit.index());
|
||||||
}
|
|
||||||
mc.cliques(ps, _mutexes);
|
mc.cliques(ps, _mutexes);
|
||||||
|
vector<vector<literal_vector>> sorted;
|
||||||
for (auto const& mux : _mutexes) {
|
for (auto const& mux : _mutexes) {
|
||||||
literal_vector clique;
|
literal_vector clique;
|
||||||
for (auto const& idx : mux) {
|
sorted.reserve(mux.size() + 1);
|
||||||
|
for (auto const& idx : mux)
|
||||||
clique.push_back(to_literal(idx));
|
clique.push_back(to_literal(idx));
|
||||||
}
|
sorted[mux.size()].push_back(clique);
|
||||||
mutexes.push_back(clique);
|
|
||||||
}
|
}
|
||||||
|
for (unsigned i = sorted.size(); i-- > 0; )
|
||||||
|
mutexes.append(sorted[i]);
|
||||||
return l_true;
|
return l_true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue