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

Bring back boolean decisions (wip)

The backtracking code doesn't know about boolean decisions yet
This commit is contained in:
Jakob Rath 2022-10-03 18:36:16 +02:00
parent 811843cf45
commit 3d27ec41d0
7 changed files with 132 additions and 27 deletions

View file

@ -60,6 +60,11 @@ namespace polysat {
// m_unused.push_back(var);
}
bool bool_var_manager::invariant(sat::bool_var var) const {
SASSERT_EQ(value(var) == l_undef, m_kind[var] == kind_t::unassigned);
return true;
}
void bool_var_manager::propagate(sat::literal lit, unsigned lvl, clause& reason) {
LOG("Propagate literal " << lit << " @ " << lvl << " by " << reason);
assign(kind_t::bool_propagation, lit, lvl, &reason);
@ -78,6 +83,12 @@ namespace polysat {
SASSERT(is_assumption(lit));
}
void bool_var_manager::decision(sat::literal lit, unsigned lvl) {
LOG("Decided " << lit << " @ " << lvl);
assign(kind_t::decision, lit, lvl, nullptr);
SASSERT(is_decision(lit));
}
void bool_var_manager::assign(kind_t k, sat::literal lit, unsigned lvl, clause* reason, dependency dep) {
SASSERT(!is_assigned(lit));
SASSERT(k != kind_t::unassigned);