mirror of
https://github.com/Z3Prover/z3
synced 2025-04-24 09:35:32 +00:00
optimizing pb
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
e2db1418f9
commit
e180cfe256
7 changed files with 247 additions and 314 deletions
|
@ -50,13 +50,15 @@ struct is_non_qffpa_predicate {
|
|||
|
||||
void operator()(app * n) {
|
||||
sort * s = get_sort(n);
|
||||
if (!m.is_bool(s) && !(u.is_float(s) || u.is_rm(s)))
|
||||
if (!(m.is_bool(s) || u.is_float(s) || u.is_rm(s)))
|
||||
throw found();
|
||||
family_id fid = s->get_family_id();
|
||||
family_id fid = n->get_family_id();
|
||||
if (fid == m.get_basic_family_id())
|
||||
return;
|
||||
if (fid == u.get_family_id())
|
||||
return;
|
||||
if (is_uninterp_const(n))
|
||||
return;
|
||||
|
||||
throw found();
|
||||
}
|
||||
|
@ -76,13 +78,15 @@ struct is_non_qffpabv_predicate {
|
|||
|
||||
void operator()(app * n) {
|
||||
sort * s = get_sort(n);
|
||||
if (!m.is_bool(s) && !(fu.is_float(s) || fu.is_rm(s) || bu.is_bv_sort(s)))
|
||||
if (!(m.is_bool(s) || fu.is_float(s) || fu.is_rm(s) || bu.is_bv_sort(s)))
|
||||
throw found();
|
||||
family_id fid = s->get_family_id();
|
||||
family_id fid = n->get_family_id();
|
||||
if (fid == m.get_basic_family_id())
|
||||
return;
|
||||
if (fid == fu.get_family_id() || fid == bu.get_family_id())
|
||||
return;
|
||||
if (is_uninterp_const(n))
|
||||
return;
|
||||
|
||||
throw found();
|
||||
}
|
||||
|
@ -109,4 +113,4 @@ probe * mk_is_qffpa_probe() {
|
|||
probe * mk_is_qffpabv_probe() {
|
||||
return alloc(is_qffpabv_probe);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -283,7 +283,7 @@ struct is_non_qfbv_predicate {
|
|||
if (!m.is_bool(n) && !u.is_bv(n))
|
||||
throw found();
|
||||
family_id fid = n->get_family_id();
|
||||
if (fid == m.get_basic_family_id())
|
||||
if (fid == m.get_basic_family_id())
|
||||
return;
|
||||
if (fid == u.get_family_id())
|
||||
return;
|
||||
|
|
|
@ -32,6 +32,7 @@ Notes:
|
|||
#define MEMLIMIT 300
|
||||
|
||||
tactic * mk_qfbv_tactic(ast_manager & m, params_ref const & p) {
|
||||
|
||||
params_ref main_p;
|
||||
main_p.set_bool("elim_and", true);
|
||||
main_p.set_bool("push_ite_bv", true);
|
||||
|
|
|
@ -1282,7 +1282,7 @@ public:
|
|||
model_converter_ref & mc,
|
||||
proof_converter_ref & pc,
|
||||
expr_dependency_ref & core) {
|
||||
if (m_p->operator()(*(in.get())).is_true())
|
||||
if (m_p->operator()(*(in.get())).is_true())
|
||||
m_t1->operator()(in, result, mc, pc, core);
|
||||
else
|
||||
m_t2->operator()(in, result, mc, pc, core);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue