mirror of
https://github.com/Z3Prover/z3
synced 2025-04-29 20:05:51 +00:00
pull unstable
Signed-off-by: Nikolaj Bjorner <nbjorner@hotmail.com>
This commit is contained in:
commit
52619b9dbb
337 changed files with 24943 additions and 30606 deletions
|
@ -31,6 +31,7 @@ Revision History:
|
|||
#include"theory_dl.h"
|
||||
#include"theory_seq_empty.h"
|
||||
#include"theory_pb.h"
|
||||
#include"theory_fpa.h"
|
||||
|
||||
namespace smt {
|
||||
|
||||
|
@ -113,6 +114,10 @@ namespace smt {
|
|||
setup_UFLRA();
|
||||
else if (m_logic == "LRA")
|
||||
setup_LRA();
|
||||
else if (m_logic == "QF_FP")
|
||||
setup_QF_FP();
|
||||
else if (m_logic == "QF_FPBV")
|
||||
setup_QF_FPBV();
|
||||
else
|
||||
setup_unknown();
|
||||
}
|
||||
|
@ -694,6 +699,16 @@ namespace smt {
|
|||
setup_mi_arith();
|
||||
}
|
||||
|
||||
void setup::setup_QF_FP() {
|
||||
setup_QF_BV();
|
||||
m_context.register_plugin(alloc(smt::theory_fpa, m_manager));
|
||||
}
|
||||
|
||||
void setup::setup_QF_FPBV() {
|
||||
setup_QF_BV();
|
||||
m_context.register_plugin(alloc(smt::theory_fpa, m_manager));
|
||||
}
|
||||
|
||||
bool is_arith(static_features const & st) {
|
||||
return st.m_num_arith_ineqs > 0 || st.m_num_arith_terms > 0 || st.m_num_arith_eqs > 0;
|
||||
}
|
||||
|
@ -810,6 +825,11 @@ namespace smt {
|
|||
m_context.register_plugin(alloc(theory_pb, m_manager, m_params));
|
||||
}
|
||||
|
||||
void setup::setup_fpa() {
|
||||
setup_bv();
|
||||
m_context.register_plugin(alloc(theory_fpa, m_manager));
|
||||
}
|
||||
|
||||
void setup::setup_unknown() {
|
||||
setup_arith();
|
||||
setup_arrays();
|
||||
|
@ -818,6 +838,7 @@ namespace smt {
|
|||
setup_dl();
|
||||
setup_seq();
|
||||
setup_card();
|
||||
setup_fpa();
|
||||
}
|
||||
|
||||
void setup::setup_unknown(static_features & st) {
|
||||
|
@ -829,6 +850,7 @@ namespace smt {
|
|||
setup_AUFLIA(false);
|
||||
setup_datatypes();
|
||||
setup_bv();
|
||||
setup_fpa();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -839,7 +861,10 @@ namespace smt {
|
|||
tout << "is_arith: " << is_arith(st) << "\n";
|
||||
tout << "has UF: " << st.has_uf() << "\n";
|
||||
tout << "has real: " << st.m_has_real << "\n";
|
||||
tout << "has int: " << st.m_has_int << "\n";);
|
||||
tout << "has int: " << st.m_has_int << "\n";
|
||||
tout << "has bv: " << st.m_has_bv << "\n";
|
||||
tout << "has fpa: " << st.m_has_fpa << "\n";
|
||||
tout << "has arrays: " << st.m_has_arrays << "\n";);
|
||||
|
||||
if (st.num_non_uf_theories() == 0) {
|
||||
setup_QF_UF(st);
|
||||
|
@ -882,7 +907,36 @@ namespace smt {
|
|||
return;
|
||||
}
|
||||
|
||||
// TODO QF_BV, QF_AUFBV, QF_AUFLIA
|
||||
if (st.num_theories() == 1 && st.m_has_bv) {
|
||||
setup_QF_BV();
|
||||
return;
|
||||
}
|
||||
|
||||
if (st.num_theories() == 1 && st.m_has_fpa) {
|
||||
setup_QF_FP();
|
||||
return;
|
||||
}
|
||||
|
||||
if (st.num_theories() == 2 && st.m_has_fpa && st.m_has_bv) {
|
||||
setup_QF_FPBV();
|
||||
return;
|
||||
}
|
||||
|
||||
if (st.num_theories() == 1 && st.m_has_arrays) {
|
||||
setup_QF_AX();
|
||||
return;
|
||||
}
|
||||
|
||||
if (st.num_theories() == 2 && st.has_uf() && st.m_has_arrays && st.m_has_bv) {
|
||||
setup_QF_AUFBV();
|
||||
return;
|
||||
}
|
||||
|
||||
if (st.num_theories() == 2 && st.has_uf() && st.m_has_arrays && st.m_has_int) {
|
||||
setup_QF_AUFLIA();
|
||||
return;
|
||||
}
|
||||
|
||||
setup_unknown();
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue