3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-11-04 05:19:11 +00:00

set recorded cubes outside and remember to reset

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2025-10-31 01:52:35 -07:00
parent f0d03e99c4
commit 3ae6853e6b
4 changed files with 8 additions and 3 deletions

View file

@ -137,7 +137,7 @@ namespace smt {
scoped_ptr<base_dependent_expr_state> m_fmls;
svector<double> m_lit_scores[2];
vector<expr_ref_vector> m_recorded_cubes;
vector<expr_ref_vector>* m_recorded_cubes = nullptr;
// -----------------------------------

View file

@ -967,6 +967,8 @@ namespace smt {
// following the pattern of solver::persist_clause in src/sat/smt/user_solver.cpp
void context::record_cube(unsigned num_lits, literal const *lits) {
if (!m_recorded_cubes)
return;
expr_ref_vector cube(m);
for (unsigned i = 0; i < num_lits; ++i) {
literal lit = lits[i];
@ -976,7 +978,7 @@ namespace smt {
e = m.mk_not(e); // only negate positive literal
cube.push_back(e);
}
m_recorded_cubes.push_back(cube);
m_recorded_cubes->push_back(cube);
}
void context::add_scores(unsigned n, literal const *lits) {

View file

@ -67,6 +67,8 @@ namespace smt {
lbool parallel::param_generator::run_prefix_step() {
IF_VERBOSE(1, verbose_stream() << " Param generator running prefix step\n");
ctx->get_fparams().m_max_conflicts = m_max_prefix_conflicts;
m_recorded_cubes.reset();
ctx->m_recorded_cubes = &m_recorded_cubes;
lbool r = l_undef;
try {
r = ctx->check();
@ -110,7 +112,7 @@ namespace smt {
double score = 0.0;
// replay the cube (negation of the clause)
for (expr_ref_vector const& cube : probe_ctx->m_recorded_cubes) {
for (expr_ref_vector const& cube : m_recorded_cubes) {
lbool r = probe_ctx->check(cube.size(), cube.data());
unsigned conflicts = probe_ctx->m_stats.m_num_conflicts;
unsigned decisions = probe_ctx->m_stats.m_num_decisions;

View file

@ -128,6 +128,7 @@ namespace smt {
unsigned m_max_prefix_conflicts = 1000;
scoped_ptr<context> m_prefix_solver;
vector<expr_ref_vector> m_recorded_cubes;
params_ref m_p;
param_values m_param_state;