mirror of
https://github.com/Z3Prover/z3
synced 2025-04-28 19:35:50 +00:00
working on adding basic cores to efficient SAT solver
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
96dc933c99
commit
e98acf4ece
8 changed files with 203 additions and 30 deletions
|
@ -360,14 +360,40 @@ struct goal2sat::imp {
|
|||
SASSERT(m_result_stack.empty());
|
||||
}
|
||||
|
||||
void add_assumption(expr* d, expr* literal_d) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
void operator()(goal const & g) {
|
||||
m_interface_vars.reset();
|
||||
collect_boolean_interface(g, m_interface_vars);
|
||||
|
||||
unsigned size = g.size();
|
||||
expr_ref f(m), d_new(m);
|
||||
ptr_vector<expr> deps;
|
||||
for (unsigned idx = 0; idx < size; idx++) {
|
||||
expr * f = g.form(idx);
|
||||
f = g.form(idx);
|
||||
// Add assumptions.
|
||||
if (g.dep(idx)) {
|
||||
expr_dependency * dep = g.dep(idx);
|
||||
deps.reset();
|
||||
m.linearize(dep, deps);
|
||||
for (unsigned i = 0; i < deps.size(); ++i) {
|
||||
expr * d = deps[i];
|
||||
expr * d1;
|
||||
SASSERT(m.is_bool(d));
|
||||
if (is_uninterp_const(d)) {
|
||||
add_assumption(d, d);
|
||||
}
|
||||
else if (m.is_not(d, d1) && is_uninterp_const(d1)) {
|
||||
add_assumption(d, d);
|
||||
}
|
||||
else {
|
||||
// create fresh variable, map back to dependency.
|
||||
add_assumption(d, d_new);
|
||||
}
|
||||
}
|
||||
}
|
||||
process(f);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue