3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-10-10 09:48:05 +00:00

adding incremental cubing from API

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2017-09-28 09:06:17 -07:00
parent 260c27d58a
commit e507a6ccd1
18 changed files with 194 additions and 9 deletions

View file

@ -139,6 +139,22 @@ namespace sat {
};
#endif
struct cube_state {
svector<bool> m_is_decision;
literal_vector m_cube;
literal m_lit;
lbool m_result;
double m_freevars_threshold;
cube_state() { reset(); }
void reset() {
m_is_decision.reset();
m_cube.reset();
m_lit = null_literal;
m_result = l_false;
m_freevars_threshold = 0;
}
};
config m_config;
double m_delta_trigger;
@ -202,6 +218,7 @@ namespace sat {
lookahead_mode m_search_mode; // mode of search
stats m_stats;
model m_model;
cube_state m_cube_state;
// ---------------------------------------
// truth values
@ -537,6 +554,8 @@ namespace sat {
*/
lbool cube();
lbool cube(literal_vector& lits);
literal select_lookahead(literal_vector const& assumptions, bool_var_vector const& vars);
/**
\brief simplify set of clauses by extracting units from a lookahead at base level.