3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-05-03 00:45:15 +00:00
This commit is contained in:
Jakob Rath 2024-02-26 10:40:37 +01:00
parent 3eb42cdf4b
commit b561795214
2 changed files with 10 additions and 1 deletions

View file

@ -648,11 +648,17 @@ namespace polysat {
verbose_stream() << "\n\n\n\n\n\nNon-viable assignment for v" << m_var << " size " << c.size(m_var) << "\n";
display_one(verbose_stream() << "entry: ", e) << "\n";
verbose_stream() << "value " << value << "\n";
m_fixed_bits.display(verbose_stream() << "fixed: ") << "\n";
fixed_slice_extra_vector fixed;
offset_slice_extra_vector subslices;
c.s.get_fixed_sub_slices(m_var, fixed, subslices); // TODO: move into m_fixed bits?
// this case occurs if e-graph merges e.g. nodes "x - 2" and "3";
// polysat will see assignment "x = 5" but no fixed bits
if (subslices.empty())
return null_dependency;
unsigned max_level = 0;
for (auto const& slice : subslices)
max_level = std::max(max_level, slice.level);
@ -681,6 +687,9 @@ namespace polysat {
unsigned w_level = slice.level; // level where value of w was fixed
if (w == m_var)
return null_dependency;
if (w == e->var)
return null_dependency;
// verbose_stream() << "v" << m_var << " size " << c.size(m_var) << ", v" << w << " size " << c.size(w) << " offset " << offset << " level " << w_level << "\n";
// Let: