mirror of
https://github.com/Z3Prover/z3
synced 2025-05-05 23:05:46 +00:00
first eufi example running
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
2288931b46
commit
74621e0b7d
26 changed files with 80 additions and 105 deletions
|
@ -64,7 +64,6 @@ struct mus::imp {
|
|||
}
|
||||
|
||||
void add_assumption(expr* lit) {
|
||||
SASSERT(is_literal(lit));
|
||||
m_assumptions.push_back(lit);
|
||||
}
|
||||
|
||||
|
@ -78,17 +77,9 @@ struct mus::imp {
|
|||
return get_mus1(mus);
|
||||
}
|
||||
|
||||
lbool get_mus(ptr_vector<expr>& mus) {
|
||||
mus.reset();
|
||||
expr_ref_vector result(m);
|
||||
lbool r = get_mus(result);
|
||||
mus.append(result.size(), result.c_ptr());
|
||||
return r;
|
||||
}
|
||||
|
||||
lbool get_mus1(expr_ref_vector& mus) {
|
||||
ptr_vector<expr> unknown(m_lit2expr.size(), m_lit2expr.c_ptr());
|
||||
ptr_vector<expr> core_exprs;
|
||||
expr_ref_vector core_exprs(m);
|
||||
TRACE("mus", m_solver.display(tout););
|
||||
while (!unknown.empty()) {
|
||||
IF_VERBOSE(12, verbose_stream() << "(mus reducing core: " << unknown.size() << " new core: " << mus.size() << ")\n";);
|
||||
|
@ -116,12 +107,12 @@ struct mus::imp {
|
|||
if (!core_exprs.contains(not_lit)) {
|
||||
// unknown := core_exprs \ mus
|
||||
unknown.reset();
|
||||
for (unsigned i = 0; i < core_exprs.size(); ++i) {
|
||||
if (!mus.contains(core_exprs[i])) {
|
||||
unknown.push_back(core_exprs[i]);
|
||||
for (expr* c : core_exprs) {
|
||||
if (!mus.contains(c)) {
|
||||
unknown.push_back(c);
|
||||
}
|
||||
}
|
||||
TRACE("mus", display_vec(tout << "core exprs:", core_exprs);
|
||||
TRACE("mus", tout << "core exprs:" << core_exprs << "\n";
|
||||
display_vec(tout << "core:", unknown);
|
||||
display_vec(tout << "mus:", mus);
|
||||
);
|
||||
|
@ -242,11 +233,11 @@ struct mus::imp {
|
|||
|
||||
void get_core(expr_set& core) {
|
||||
core.reset();
|
||||
ptr_vector<expr> core_exprs;
|
||||
expr_ref_vector core_exprs(m);
|
||||
m_solver.get_unsat_core(core_exprs);
|
||||
for (unsigned i = 0; i < core_exprs.size(); ++i) {
|
||||
if (m_expr2lit.contains(core_exprs[i])) {
|
||||
core.insert(core_exprs[i]);
|
||||
for (expr* c : core_exprs) {
|
||||
if (m_expr2lit.contains(c)) {
|
||||
core.insert(c);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -375,9 +366,6 @@ void mus::add_assumption(expr* lit) {
|
|||
return m_imp->add_assumption(lit);
|
||||
}
|
||||
|
||||
lbool mus::get_mus(ptr_vector<expr>& mus) {
|
||||
return m_imp->get_mus(mus);
|
||||
}
|
||||
|
||||
lbool mus::get_mus(expr_ref_vector& mus) {
|
||||
return m_imp->get_mus(mus);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue