3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-29 11:55:51 +00:00

bug fixes

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2023-12-27 11:29:42 -08:00
parent 9cce1ff836
commit 6103c9d718
9 changed files with 124 additions and 21 deletions

View file

@ -40,7 +40,8 @@ namespace polysat {
m_intblast(ctx),
m_lemma(ctx.get_manager())
{
// ctx.get_egraph().add_plugin(alloc(euf::bv_plugin, ctx.get_egraph()));
m_bv_plugin = alloc(euf::bv_plugin, ctx.get_egraph());
ctx.get_egraph().add_plugin(m_bv_plugin);
}
unsigned solver::get_bv_size(euf::enode* n) {
@ -120,6 +121,20 @@ namespace polysat {
auto lit = sat::literal(bv, s().value(bv) == l_false);
core.push_back(lit);
}
else if (d.is_fixed_claim()) {
auto const& o = d.fixed();
std::function<void(euf::enode*, euf::enode*)> consume = [&](auto* a, auto* b) {
eqs.push_back({ a, b });
};
explain_fixed(o.v, o.lo, o.hi, o.value, consume);
}
else if (d.is_offset_claim()) {
auto const& offs = d.offset();
std::function<void(euf::enode*, euf::enode*)> consume = [&](auto* a, auto* b) {
eqs.push_back({ a, b });
};
explain_slice(offs.v, offs.w, offs.offset, consume);
}
else {
auto const [v1, v2] = d.eq();
euf::enode* const n1 = var2enode(v1);