mirror of
https://github.com/Z3Prover/z3
synced 2025-08-04 02:10:23 +00:00
display
This commit is contained in:
parent
8d45c954c5
commit
705203ea4c
1 changed files with 9 additions and 5 deletions
|
@ -126,6 +126,7 @@ namespace polysat {
|
||||||
// walk the e-graph to retrieve fixed sub-slices along with justifications,
|
// walk the e-graph to retrieve fixed sub-slices along with justifications,
|
||||||
// as well as pvars that correspond to these sub-slices.
|
// as well as pvars that correspond to these sub-slices.
|
||||||
void solver::get_fixed_sub_slices(pvar pv, fixed_slice_extra_vector& fixed, offset_slice_extra_vector& subslices) {
|
void solver::get_fixed_sub_slices(pvar pv, fixed_slice_extra_vector& fixed, offset_slice_extra_vector& subslices) {
|
||||||
|
#define GET_FIXED_SUB_SLICES_DISPLAY 1
|
||||||
auto consume_slice = [&](euf::enode* n, unsigned offset) -> bool {
|
auto consume_slice = [&](euf::enode* n, unsigned offset) -> bool {
|
||||||
euf::enode* r = n->get_root();
|
euf::enode* r = n->get_root();
|
||||||
if (!r->interpreted())
|
if (!r->interpreted())
|
||||||
|
@ -142,14 +143,13 @@ namespace polysat {
|
||||||
euf::theory_var u = n->get_th_var(get_id());
|
euf::theory_var u = n->get_th_var(get_id());
|
||||||
dependency dep = (u == euf::null_theory_var) ? dependency::axiom() : dependency(u, w); // TODO: probably need an enode_pair instead?
|
dependency dep = (u == euf::null_theory_var) ? dependency::axiom() : dependency(u, w); // TODO: probably need an enode_pair instead?
|
||||||
|
|
||||||
#if 0
|
#if GET_FIXED_SUB_SLICES_DISPLAY
|
||||||
verbose_stream() << " " << value << "[" << length << "]@" << offset;
|
verbose_stream() << " " << value << "[" << length << "]@" << offset;
|
||||||
verbose_stream() << " node " << ctx.bpp(n);
|
verbose_stream() << " node " << ctx.bpp(n);
|
||||||
verbose_stream() << " tv " << u;
|
verbose_stream() << " tv " << u;
|
||||||
if (u != euf::null_theory_var)
|
if (u != euf::null_theory_var)
|
||||||
verbose_stream() << " := " << m_var2pdd[u];
|
verbose_stream() << " := " << m_var2pdd[u];
|
||||||
verbose_stream() << " merge-level " << level;
|
verbose_stream() << " merge-level " << level;
|
||||||
// verbose_stream() << " just " << n->get_justification();
|
|
||||||
verbose_stream() << "\n";
|
verbose_stream() << "\n";
|
||||||
fixed.push_back(fixed_slice_extra(value, offset, length, level, dep));
|
fixed.push_back(fixed_slice_extra(value, offset, length, level, dep));
|
||||||
#endif
|
#endif
|
||||||
|
@ -161,18 +161,22 @@ namespace polysat {
|
||||||
auto const& p = m_var2pdd[s];
|
auto const& p = m_var2pdd[s];
|
||||||
if (!p.is_var())
|
if (!p.is_var())
|
||||||
continue;
|
continue;
|
||||||
#if 0
|
unsigned p_level = merge_level(sib, r);
|
||||||
|
#if GET_FIXED_SUB_SLICES_DISPLAY
|
||||||
verbose_stream() << " pvar " << p;
|
verbose_stream() << " pvar " << p;
|
||||||
verbose_stream() << " node " << ctx.bpp(sib);
|
verbose_stream() << " node " << ctx.bpp(sib);
|
||||||
verbose_stream() << " tv " << s;
|
verbose_stream() << " tv " << s;
|
||||||
verbose_stream() << " merge-level " << merge_level(sib, r);
|
verbose_stream() << " merge-level " << p_level;
|
||||||
verbose_stream() << "\n";
|
verbose_stream() << "\n";
|
||||||
#endif
|
#endif
|
||||||
subslices.push_back(offset_slice_extra(p.var(), offset, merge_level(sib, r)));
|
subslices.push_back(offset_slice_extra(p.var(), offset, p_level));
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
|
#if GET_FIXED_SUB_SLICES_DISPLAY
|
||||||
|
verbose_stream() << "fixed subslices of v" << pv << ":\n";
|
||||||
|
#endif
|
||||||
theory_var v = m_pddvar2var[pv];
|
theory_var v = m_pddvar2var[pv];
|
||||||
m_bv_plugin->sub_slices(var2enode(v), consume_slice);
|
m_bv_plugin->sub_slices(var2enode(v), consume_slice);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue