3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-23 09:05:31 +00:00

working on product sets

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2014-08-26 16:45:45 -07:00
parent 3ae10abf04
commit 9e7cef7d6b
8 changed files with 377 additions and 66 deletions

View file

@ -71,18 +71,19 @@ namespace sat {
literal lit = core.back();
core.pop_back();
unsigned sz = mus.size();
// mus.push_back(~lit); // TBD: measure
mus.append(core);
mus.push_back(~lit); // TBD: measure
lbool is_sat = s.check(mus.size(), mus.c_ptr());
TRACE("sat", tout << "mus: " << mus << "\n";);
mus.resize(sz);
switch (is_sat) {
case l_undef:
mus.resize(sz);
core.push_back(lit);
set_core();
return l_undef;
case l_true: {
SASSERT(value_at(lit, s.get_model()) == l_false);
mus.resize(sz);
mus.push_back(lit);
if (!core.empty()) {
// mr(); // TBD: measure
@ -92,8 +93,18 @@ namespace sat {
case l_false:
literal_vector const& new_core = s.get_core();
if (new_core.contains(~lit)) {
mus.resize(sz);
break;
#if 0
mus.pop_back();
is_sat = s.check(mus.size(), mus.c_ptr());
SASSERT(is_sat != l_true);
if (is_sat != l_false) {
return l_undef;
}
#endif
}
mus.resize(sz);
TRACE("sat", tout << "new core: " << new_core << "\n";);
core.reset();
for (unsigned i = 0; i < new_core.size(); ++i) {
@ -102,7 +113,6 @@ namespace sat {
core.push_back(lit);
}
}
IF_VERBOSE(2, verbose_stream() << "reduced core: " << core.size() << "\n";);
break;
}
}