3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-24 09:35:32 +00:00
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2019-08-01 16:28:05 +08:00
parent b7a27ca4bd
commit 7f073a0585
4 changed files with 302 additions and 300 deletions

View file

@ -61,25 +61,12 @@ private:
// This is relevant for big benchmarks that are meant to be solved
// by a non-incremental solver. );
bool m_solver2_initialized;
bool m_ignore_solver1;
inc_unknown_behavior m_inc_unknown_behavior;
unsigned m_inc_timeout;
void init_solver2_assertions() {
if (m_solver2_initialized)
return;
unsigned sz = m_solver1->get_num_assertions();
for (unsigned i = 0; i < sz; i++) {
m_solver2->assert_expr(m_solver1->get_assertion(i));
}
m_solver2_initialized = true;
}
void switch_inc_mode() {
m_inc_mode = true;
init_solver2_assertions();
}
struct aux_timeout_eh : public event_handler {
@ -131,7 +118,6 @@ public:
m_solver1 = s1;
m_solver2 = s2;
updt_local_params(p);
m_solver2_initialized = false;
m_inc_mode = false;
m_check_sat_executed = false;
m_use_solver1_results = true;
@ -142,7 +128,6 @@ public:
solver* s1 = m_solver1->translate(m, p);
solver* s2 = m_solver2->translate(m, p);
combined_solver* r = alloc(combined_solver, s1, s2, p);
r->m_solver2_initialized = m_solver2_initialized;
r->m_inc_mode = m_inc_mode;
r->m_check_sat_executed = m_check_sat_executed;
r->m_use_solver1_results = m_use_solver1_results;
@ -171,15 +156,13 @@ public:
if (m_check_sat_executed)
switch_inc_mode();
m_solver1->assert_expr(t);
if (m_solver2_initialized)
m_solver2->assert_expr(t);
m_solver2->assert_expr(t);
}
void assert_expr_core2(expr * t, expr * a) override {
if (m_check_sat_executed)
switch_inc_mode();
m_solver1->assert_expr(t, a);
init_solver2_assertions();
m_solver2->assert_expr(t, a);
}