mirror of
https://github.com/Z3Prover/z3
synced 2025-08-22 11:07:51 +00:00
arrays (#4684)
* arrays Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * arrays Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * na Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * arrays Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * na Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * fill Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * update drat and fix euf bugs Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * na Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * na Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * na Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * const qualifiers Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * na Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * reorg ba Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * reorg Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * build warnings Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
d56dd1db7b
commit
796e2fd9eb
79 changed files with 2571 additions and 1850 deletions
|
@ -313,8 +313,8 @@ namespace smt {
|
|||
// }
|
||||
}
|
||||
else {
|
||||
m_params.m_arith_bound_prop = BP_NONE;
|
||||
m_params.m_arith_propagation_strategy = ARITH_PROP_AGILITY;
|
||||
m_params.m_arith_bound_prop = bound_prop_mode::BP_NONE;
|
||||
m_params.m_arith_propagation_strategy = arith_prop_strategy::ARITH_PROP_AGILITY;
|
||||
m_params.m_arith_add_binary_bounds = true;
|
||||
if (!st.m_has_rational && !m_params.m_model && st.arith_k_sum_is_small())
|
||||
m_context.register_plugin(alloc(smt::theory_frdl, m_context));
|
||||
|
@ -524,7 +524,7 @@ namespace smt {
|
|||
m_params.m_restart_factor = 1.5;
|
||||
}
|
||||
if (st.m_num_bin_clauses + st.m_num_units == st.m_num_clauses && st.m_cnf && st.m_arith_k_sum > rational(100000)) {
|
||||
m_params.m_arith_bound_prop = BP_NONE;
|
||||
m_params.m_arith_bound_prop = bound_prop_mode::BP_NONE;
|
||||
m_params.m_arith_stronger_lemmas = false;
|
||||
}
|
||||
setup_lra_arith();
|
||||
|
@ -736,7 +736,7 @@ namespace smt {
|
|||
}
|
||||
|
||||
void setup::setup_i_arith() {
|
||||
if (AS_OLD_ARITH == m_params.m_arith_mode) {
|
||||
if (arith_solver_id::AS_OLD_ARITH == m_params.m_arith_mode) {
|
||||
m_context.register_plugin(alloc(smt::theory_i_arith, m_context));
|
||||
}
|
||||
else {
|
||||
|
@ -745,7 +745,7 @@ namespace smt {
|
|||
}
|
||||
|
||||
void setup::setup_lra_arith() {
|
||||
if (m_params.m_arith_mode == AS_OLD_ARITH)
|
||||
if (m_params.m_arith_mode == arith_solver_id::AS_OLD_ARITH)
|
||||
m_context.register_plugin(alloc(smt::theory_mi_arith, m_context));
|
||||
else
|
||||
m_context.register_plugin(alloc(smt::theory_lra, m_context));
|
||||
|
@ -753,10 +753,10 @@ namespace smt {
|
|||
|
||||
void setup::setup_mi_arith() {
|
||||
switch (m_params.m_arith_mode) {
|
||||
case AS_OPTINF:
|
||||
case arith_solver_id::AS_OPTINF:
|
||||
m_context.register_plugin(alloc(smt::theory_inf_arith, m_context));
|
||||
break;
|
||||
case AS_NEW_ARITH:
|
||||
case arith_solver_id::AS_NEW_ARITH:
|
||||
setup_lra_arith();
|
||||
break;
|
||||
default:
|
||||
|
@ -778,13 +778,13 @@ namespace smt {
|
|||
bool int_only = !st.m_has_rational && !st.m_has_real && m_params.m_arith_int_only;
|
||||
auto mode = m_params.m_arith_mode;
|
||||
if (m_logic == "QF_LIA") {
|
||||
mode = AS_NEW_ARITH;
|
||||
mode = arith_solver_id::AS_NEW_ARITH;
|
||||
}
|
||||
switch(mode) {
|
||||
case AS_NO_ARITH:
|
||||
case arith_solver_id::AS_NO_ARITH:
|
||||
m_context.register_plugin(alloc(smt::theory_dummy, m_context, m_manager.mk_family_id("arith"), "no arithmetic"));
|
||||
break;
|
||||
case AS_DIFF_LOGIC:
|
||||
case arith_solver_id::AS_DIFF_LOGIC:
|
||||
m_params.m_arith_eq2ineq = true;
|
||||
if (fixnum) {
|
||||
if (int_only)
|
||||
|
@ -799,7 +799,7 @@ namespace smt {
|
|||
m_context.register_plugin(alloc(smt::theory_rdl, m_context));
|
||||
}
|
||||
break;
|
||||
case AS_DENSE_DIFF_LOGIC:
|
||||
case arith_solver_id::AS_DENSE_DIFF_LOGIC:
|
||||
m_params.m_arith_eq2ineq = true;
|
||||
if (fixnum) {
|
||||
if (int_only)
|
||||
|
@ -814,23 +814,23 @@ namespace smt {
|
|||
m_context.register_plugin(alloc(smt::theory_dense_mi, m_context));
|
||||
}
|
||||
break;
|
||||
case AS_UTVPI:
|
||||
case arith_solver_id::AS_UTVPI:
|
||||
m_params.m_arith_eq2ineq = true;
|
||||
if (int_only)
|
||||
m_context.register_plugin(alloc(smt::theory_iutvpi, m_context));
|
||||
else
|
||||
m_context.register_plugin(alloc(smt::theory_rutvpi, m_context));
|
||||
break;
|
||||
case AS_OPTINF:
|
||||
case arith_solver_id::AS_OPTINF:
|
||||
m_context.register_plugin(alloc(smt::theory_inf_arith, m_context));
|
||||
break;
|
||||
case AS_OLD_ARITH:
|
||||
case arith_solver_id::AS_OLD_ARITH:
|
||||
if (m_params.m_arith_int_only && int_only)
|
||||
m_context.register_plugin(alloc(smt::theory_i_arith, m_context));
|
||||
else
|
||||
m_context.register_plugin(alloc(smt::theory_mi_arith, m_context));
|
||||
break;
|
||||
case AS_NEW_ARITH:
|
||||
case arith_solver_id::AS_NEW_ARITH:
|
||||
setup_lra_arith();
|
||||
break;
|
||||
default:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue