3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-23 17:15:31 +00:00

Add merge_level

This commit is contained in:
Jakob Rath 2024-02-07 15:26:15 +01:00
parent 70785a095e
commit 5e545c8f86
2 changed files with 10 additions and 0 deletions

View file

@ -23,6 +23,15 @@ Author:
namespace polysat {
unsigned solver::merge_level(euf::enode* a, euf::enode* b) {
sat::literal_vector r;
ctx.get_eq_antecedents(a, b, r);
unsigned level = 0;
for (sat::literal lit : r)
level = std::max(level, s().lvl(lit));
return level;
}
// walk the egraph starting with pvar for suffix overlaps.
void solver::get_bitvector_suffixes(pvar pv, offset_slices& out) {
uint_set seen;

View file

@ -111,6 +111,7 @@ namespace polysat {
sat::check_result intblast();
unsigned merge_level(euf::enode* a, euf::enode* b);
void explain_slice(pvar v, pvar w, unsigned offset, std::function<void(euf::enode*, euf::enode*)> const& consume);
void explain_fixed(pvar v, fixed_slice const& s, std::function<void(euf::enode*, euf::enode*)> const& consume_eq);