3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-23 09:05:31 +00:00
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2024-01-08 20:44:30 -08:00
parent cc4ed602e5
commit f34e55e86e

View file

@ -358,7 +358,7 @@ namespace polysat {
void core::propagate_assignment(pvar v, rational const& value, dependency dep) {
TRACE("bv", tout << "propagate assignment v" << v << " := " << value << "\n");
SASSERT(!is_assigned(v));
m_values[v] = value;
m_justification[v] = dep;
m_assignment.push(v , value);
@ -390,12 +390,18 @@ namespace polysat {
// will not update m_watch[v] (other than copy constructor for m_watch)
// because v has been assigned a value.
propagate_eval({ idx });
if (s.inconsistent())
return;
SASSERT(!swapped || vars.size() <= 1 || (!is_assigned(vars[0]) && !is_assigned(vars[1])));
if (!swapped)
m_watch[v][j++] = idx;
if (s.inconsistent()) {
++k;
for (; k < sz; ++k)
m_watch[v][j++] = m_watch[v][k];
m_watch[v].shrink(j);
return;
}
if (vars.size() <= 1)
continue;
auto v0 = vars[0];