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:
parent
9cce1ff836
commit
6103c9d718
9 changed files with 124 additions and 21 deletions
|
@ -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);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue