mirror of
https://github.com/Z3Prover/z3
synced 2025-04-22 08:35:31 +00:00
fixup merges
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
ec6e2139dd
commit
60ac9388c8
2 changed files with 11 additions and 19 deletions
|
@ -174,14 +174,12 @@ namespace euf {
|
|||
push_merge(mk_extract(x->get_interpreted(), lo, hi), mk_value(val_p, width(p)));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
for (enode* sib : enode_class(x)) {
|
||||
if (is_concat(sib, a, b)) {
|
||||
if (!is_value(a) || !is_value(b)) {
|
||||
auto val_a = machine_div2k(val_x, width(b));
|
||||
auto val_b = mod2k(val_x, width(b));
|
||||
push_merge(mk_concat(mk_value(val_a, width(a)), mk_value(val_b, width(b))), x->get_interpreted());
|
||||
}
|
||||
auto val_a = machine_div2k(val_x, width(b));
|
||||
auto val_b = mod2k(val_x, width(b));
|
||||
push_merge(mk_concat(mk_value(val_a, width(a)), mk_value(val_b, width(b))), x->get_interpreted());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -416,6 +416,11 @@ namespace polysat {
|
|||
|
||||
expr_ref solver::constraint2expr(signed_constraint const& sc) {
|
||||
expr_ref result(m);
|
||||
if (sc.is_always_false())
|
||||
return expr_ref(m.mk_false(), m);
|
||||
if (sc.is_always_true())
|
||||
return expr_ref(m.mk_true(), m);
|
||||
|
||||
switch (sc.op()) {
|
||||
case ckind_t::ule_t: {
|
||||
auto p = sc.to_ule().lhs();
|
||||
|
@ -424,23 +429,12 @@ namespace polysat {
|
|||
if (q.is_zero() && p.has_unit(x)) {
|
||||
auto l = pdd2expr(x);
|
||||
auto r = pdd2expr(x - p);
|
||||
if (m.are_equal(l, r))
|
||||
result = m.mk_true();
|
||||
else if (m.are_distinct(l, r))
|
||||
result = m.mk_false();
|
||||
else
|
||||
result = m.mk_eq(l, r);
|
||||
result = m.mk_eq(l, r);
|
||||
}
|
||||
else {
|
||||
auto l = pdd2expr(p);
|
||||
auto r = pdd2expr(q);
|
||||
if (m.are_equal(l, r))
|
||||
result = m.mk_true();
|
||||
else if (m.is_value(l) && m.is_value(r)) {
|
||||
result = bv.mk_ule(l, r);
|
||||
ctx.get_rewriter()(result);
|
||||
}
|
||||
else if (q.is_zero())
|
||||
if (q.is_zero())
|
||||
result = m.mk_eq(l, r);
|
||||
else
|
||||
result = bv.mk_ule(l, r);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue