3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-08-26 04:56:03 +00:00

adding uhle/uhte for faster asymmetric branching

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2017-11-29 21:21:56 -08:00
parent 26bd784b1f
commit da0aa71082
4 changed files with 221 additions and 57 deletions

View file

@ -20,6 +20,7 @@ Revision History:
#define SAT_ASYMM_BRANCH_H_
#include "sat/sat_types.h"
#include "sat/sat_scc.h"
#include "util/statistics.h"
#include "util/params.h"
@ -30,21 +31,37 @@ namespace sat {
class asymm_branch {
struct report;
solver & s;
solver & s;
params_ref m_params;
int64 m_counter;
random_gen m_rand;
unsigned m_calls;
// config
bool m_asymm_branch;
bool m_asymm_branch_all;
int64 m_asymm_branch_limit;
bool m_asymm_branch;
bool m_asymm_branch_all;
int64 m_asymm_branch_limit;
// stats
unsigned m_elim_literals;
unsigned m_elim_literals;
literal_vector m_pos, m_neg; // literals (complements of literals) in clauses sorted by discovery time (m_left in scc).
literal_vector m_to_delete;
struct compare_left;
void sort(scc & scc, clause const& c);
bool uhle(scoped_detach& scoped_d, scc & scc, clause & c);
bool uhte(scc & scc, clause & c);
bool re_attach(scoped_detach& scoped_d, clause& c, unsigned new_sz);
bool process(clause & c);
bool process2(scc& scc, clause & c);
void process(clause_vector & c);
bool process_all(clause & c);
@ -55,6 +72,8 @@ namespace sat {
bool propagate_literal(clause const& c, literal l);
void setup_big();
public:
asymm_branch(solver & s, params_ref const & p);