mirror of
https://github.com/Z3Prover/z3
synced 2025-08-24 12:07:52 +00:00
correct handling of integer vars by NB
Signed-off-by: Lev Nachmanson <levnach@microsoft.com>
This commit is contained in:
parent
2e95a9d6b2
commit
0e0e9c7041
1 changed files with 12 additions and 5 deletions
|
@ -314,6 +314,7 @@ namespace smt {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void found_not_handled(expr* n) {
|
void found_not_handled(expr* n) {
|
||||||
m_not_handled = n;
|
m_not_handled = n;
|
||||||
if (is_app(n) && is_underspecified(to_app(n))) {
|
if (is_app(n) && is_underspecified(to_app(n))) {
|
||||||
|
@ -419,9 +420,6 @@ namespace smt {
|
||||||
if (is_app(n)) {
|
if (is_app(n)) {
|
||||||
internalize_args(to_app(n));
|
internalize_args(to_app(n));
|
||||||
}
|
}
|
||||||
if (a.is_int(n)) {
|
|
||||||
found_not_handled(n);
|
|
||||||
}
|
|
||||||
theory_var v = mk_var(n);
|
theory_var v = mk_var(n);
|
||||||
coeffs[vars.size()] = coeffs[index];
|
coeffs[vars.size()] = coeffs[index];
|
||||||
vars.push_back(v);
|
vars.push_back(v);
|
||||||
|
@ -1189,6 +1187,7 @@ namespace smt {
|
||||||
case l_false:
|
case l_false:
|
||||||
return FC_CONTINUE;
|
return FC_CONTINUE;
|
||||||
case l_undef:
|
case l_undef:
|
||||||
|
TRACE("arith", tout << "check-lia giveup\n";);
|
||||||
st = FC_GIVEUP;
|
st = FC_GIVEUP;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1199,10 +1198,12 @@ namespace smt {
|
||||||
case l_false:
|
case l_false:
|
||||||
return FC_CONTINUE;
|
return FC_CONTINUE;
|
||||||
case l_undef:
|
case l_undef:
|
||||||
|
TRACE("arith", tout << "check-nra giveup\n";);
|
||||||
st = FC_GIVEUP;
|
st = FC_GIVEUP;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (m_not_handled != 0) {
|
if (m_not_handled != 0) {
|
||||||
|
TRACE("arith", tout << "unhandled operator " << mk_pp(m_not_handled, m) << "\n";);
|
||||||
st = FC_GIVEUP;
|
st = FC_GIVEUP;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1211,11 +1212,13 @@ namespace smt {
|
||||||
set_conflict();
|
set_conflict();
|
||||||
return FC_CONTINUE;
|
return FC_CONTINUE;
|
||||||
case l_undef:
|
case l_undef:
|
||||||
|
TRACE("arith", tout << "check feasiable is undef\n";);
|
||||||
return m.canceled() ? FC_CONTINUE : FC_GIVEUP;
|
return m.canceled() ? FC_CONTINUE : FC_GIVEUP;
|
||||||
default:
|
default:
|
||||||
UNREACHABLE();
|
UNREACHABLE();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
TRACE("arith", tout << "default giveup\n";);
|
||||||
return FC_GIVEUP;
|
return FC_GIVEUP;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1268,10 +1271,12 @@ namespace smt {
|
||||||
set_conflict1();
|
set_conflict1();
|
||||||
return l_false;
|
return l_false;
|
||||||
case lean::lia_move::give_up:
|
case lean::lia_move::give_up:
|
||||||
|
TRACE("arith", tout << "lia giveup\n";);
|
||||||
return l_undef;
|
return l_undef;
|
||||||
default:
|
default:
|
||||||
UNREACHABLE();
|
UNREACHABLE();
|
||||||
}
|
}
|
||||||
|
UNREACHABLE();
|
||||||
return l_undef;
|
return l_undef;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1294,6 +1299,8 @@ namespace smt {
|
||||||
return l_false;
|
return l_false;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case l_undef:
|
||||||
|
TRACE("arith", tout << "nra-undef\n";);
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue