mirror of
https://github.com/Z3Prover/z3
synced 2025-04-14 12:58:44 +00:00
fix #1783, wronge clausification of negated pb inequalities. Signs were ignored
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
8de8c4cade
commit
96d3b98a44
|
@ -451,7 +451,15 @@ struct goal2sat::imp {
|
|||
unsigned sz = m_result_stack.size();
|
||||
if (root) {
|
||||
m_result_stack.reset();
|
||||
m_ext->add_pb_ge(sat::null_bool_var, wlits, k.get_unsigned());
|
||||
unsigned k1 = k.get_unsigned();
|
||||
if (sign) {
|
||||
k1 = 1 - k1;
|
||||
for (wliteral& wl : wlits) {
|
||||
wl.second.neg();
|
||||
k1 += wl.first;
|
||||
}
|
||||
}
|
||||
m_ext->add_pb_ge(sat::null_bool_var, wlits, k1);
|
||||
}
|
||||
else {
|
||||
sat::bool_var v = m_solver.mk_var(true);
|
||||
|
@ -476,7 +484,15 @@ struct goal2sat::imp {
|
|||
unsigned sz = m_result_stack.size();
|
||||
if (root) {
|
||||
m_result_stack.reset();
|
||||
m_ext->add_pb_ge(sat::null_bool_var, wlits, k.get_unsigned());
|
||||
unsigned k1 = k.get_unsigned();
|
||||
if (sign) {
|
||||
k1 = 1 - k1;
|
||||
for (wliteral& wl : wlits) {
|
||||
wl.second.neg();
|
||||
k1 += wl.first;
|
||||
}
|
||||
}
|
||||
m_ext->add_pb_ge(sat::null_bool_var, wlits, k1);
|
||||
}
|
||||
else {
|
||||
sat::bool_var v = m_solver.mk_var(true);
|
||||
|
|
|
@ -167,7 +167,8 @@ public:
|
|||
m_mc.reset();
|
||||
expr_ref_vector axioms(m);
|
||||
expr_safe_replace rep(m);
|
||||
|
||||
|
||||
TRACE("pb", g->display(tout););
|
||||
tactic_report report("lia2card", *g);
|
||||
|
||||
bound_manager bounds(m);
|
||||
|
|
Loading…
Reference in a new issue