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:
parent
b7a27ca4bd
commit
7f073a0585
4 changed files with 302 additions and 300 deletions
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue