mirror of
https://github.com/Z3Prover/z3
synced 2025-04-28 03:15:50 +00:00
fix regressions in nl/smt
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
5632900f35
commit
e8811748d3
7 changed files with 49 additions and 35 deletions
|
@ -549,9 +549,10 @@ struct is_non_qfufnra_functor {
|
|||
case OP_IRRATIONAL_ALGEBRAIC_NUM:
|
||||
return;
|
||||
case OP_MUL:
|
||||
if (n->get_num_args() == 2 ||
|
||||
(!u.is_numeral(n->get_arg(0)) &&
|
||||
!u.is_numeral(n->get_arg(1)))) {
|
||||
if (n->get_num_args() == 2 &&
|
||||
u.is_real(n->get_arg(0)) &&
|
||||
!u.is_numeral(n->get_arg(0)) &&
|
||||
!u.is_numeral(n->get_arg(1))) {
|
||||
m_has_nonlinear = true;
|
||||
}
|
||||
return;
|
||||
|
|
|
@ -311,16 +311,17 @@ private:
|
|||
// assert equalities between equal interface real variables.
|
||||
|
||||
model_ref mdl_nl, mdl_smt;
|
||||
model_converter2model(m, nl_mc.get(), mdl_nl);
|
||||
update_eq_values(mdl_nl);
|
||||
enforce_equalities(mdl_nl, m_nl_g);
|
||||
|
||||
setup_assumptions(mdl_nl);
|
||||
|
||||
TRACE("nlsat_smt",
|
||||
model_smt2_pp(tout << "nl model\n", m, *mdl_nl.get(), 0);
|
||||
m_solver->display(tout << "smt goal:\n"); tout << "\n";);
|
||||
|
||||
if (mdl_nl.get()) {
|
||||
model_converter2model(m, nl_mc.get(), mdl_nl);
|
||||
update_eq_values(mdl_nl);
|
||||
enforce_equalities(mdl_nl, m_nl_g);
|
||||
|
||||
setup_assumptions(mdl_nl);
|
||||
|
||||
TRACE("nlsat_smt",
|
||||
model_smt2_pp(tout << "nl model\n", m, *mdl_nl.get(), 0);
|
||||
m_solver->display(tout << "smt goal:\n"); tout << "\n";);
|
||||
}
|
||||
result.reset();
|
||||
lbool r = m_solver->check_sat(m_asms.size(), m_asms.c_ptr());
|
||||
if (r == l_false) {
|
||||
|
@ -352,7 +353,9 @@ private:
|
|||
TRACE("nlsat_smt",
|
||||
m_fmc->display(tout << "joint state is sat\n");
|
||||
nl_mc->display(tout << "nl\n"););
|
||||
merge_models(*mdl_nl.get(), mdl_smt);
|
||||
if (mdl_nl.get()) {
|
||||
merge_models(*mdl_nl.get(), mdl_smt);
|
||||
}
|
||||
mc = m_fmc.get();
|
||||
apply(mc, mdl_smt, 0);
|
||||
mc = model2model_converter(mdl_smt.get());
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue