3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-03-02 11:46:55 +00:00

resolution is still wrong

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2022-01-29 09:32:14 -08:00
parent 0eb0306ae2
commit 60248d0981
4 changed files with 30 additions and 26 deletions

View file

@ -554,14 +554,14 @@ namespace polysat {
sat::bool_var const var = lit.var();
if (!m_conflict.is_bmarked(var))
continue;
if (m_bvars.level(var) <= base_level())
continue;
LOG("Conflict: " << m_conflict);
if (m_bvars.is_decision(var)) {
if (m_bvars.is_assumption(var))
continue;
else if (m_bvars.is_decision(var)) {
revert_bool_decision(lit);
return;
}
if (m_bvars.is_bool_propagation(var))
else if (m_bvars.is_bool_propagation(var))
m_conflict.resolve(lit, *m_bvars.reason(lit));
else
m_conflict.resolve_with_assignment(lit, m_bvars.level(lit));
@ -600,19 +600,6 @@ namespace polysat {
}
m_activity_inc >>= 14;
}
#if 0
/** Conflict resolution case where boolean literal 'lit' is on top of the stack
* NOTE: boolean resolution should work normally even in bailout mode.
*/
void solver::resolve_bool(sat::literal lit) {
SASSERT(m_bvars.is_bool_propagation(lit));
clause const& other = *m_bvars.reason(lit);
LOG_H3("resolve_bool: " << lit << " " << show_deref(&other));
m_conflict.resolve(lit, *other);
}
#endif
void solver::report_unsat() {
backjump(base_level());
@ -782,7 +769,7 @@ namespace polysat {
}
unsigned solver::level(sat::literal lit0, clause const& cl) {
unsigned lvl = base_level();
unsigned lvl = 0;
for (auto lit : cl) {
if (lit == lit0)
continue;