mirror of
https://github.com/Z3Prover/z3
synced 2025-08-03 09:50:23 +00:00
handle better cancellation for parallel, switch between cube mode and base level mode in smt.threads, expose parameters to control theory_bv and phase caching
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
fae206b738
commit
ca3ec22b7a
18 changed files with 261 additions and 149 deletions
|
@ -34,25 +34,26 @@ namespace {
|
|||
struct cuber {
|
||||
smt_solver& m_solver;
|
||||
unsigned m_round;
|
||||
expr_ref m_result;
|
||||
expr_ref_vector m_result;
|
||||
unsigned m_depth;
|
||||
cuber(smt_solver& s):
|
||||
m_solver(s),
|
||||
m_round(0),
|
||||
m_result(s.get_manager()) {}
|
||||
m_result(s.get_manager()),
|
||||
m_depth(s.m_smt_params.m_cube_depth) {}
|
||||
expr_ref cube() {
|
||||
switch (m_round) {
|
||||
case 0:
|
||||
m_result = m_solver.m_context.next_cube();
|
||||
break;
|
||||
case 1:
|
||||
m_result = m_solver.get_manager().mk_not(m_result);
|
||||
break;
|
||||
default:
|
||||
m_result = m_solver.get_manager().mk_false();
|
||||
break;
|
||||
if (m_round == 0) {
|
||||
m_result = m_solver.m_context.cubes(m_depth);
|
||||
}
|
||||
expr_ref r(m_result.m());
|
||||
if (m_round < m_result.size()) {
|
||||
r = m_result.get(m_round);
|
||||
}
|
||||
else {
|
||||
r = m_result.m().mk_false();
|
||||
}
|
||||
++m_round;
|
||||
return m_result;
|
||||
return r;
|
||||
}
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue