16 const unsigned not_lit =
NOT (
lit);
17 values[
lit] = values[not_lit] = 0;
22static inline void add_unassigned_variable_back_to_queue (
kissat *
solver,
26 const unsigned idx =
IDX (
lit);
31static inline void add_unassigned_variable_back_to_heap (
kissat *
solver,
35 const unsigned idx =
IDX (
lit);
36 if (!kissat_heap_contains (
scores, idx))
40static void kissat_update_target_and_best_phases (
kissat *
solver) {
49 LOG (
"updating target and best phases");
55 "updating target assigned "
56 "trail height from %u to %u",
65 "updating best assigned "
66 "trail height from %u to %u",
77 if (
solver->level == new_level)
80 LOG (
"backtracking to decision level %u", new_level);
87 unsigned *new_end = trail + new_frame->
trail;
91 unsigned unassigned = 0, reassigned = 0;
93 unsigned *q = new_end;
96 for (
const unsigned *
p = q;
p != old_end;
p++) {
97 const unsigned lit = *
p;
98 const unsigned idx =
IDX (
lit);
102 if (
level <= new_level) {
103 const unsigned new_trail = q -
trail;
105 a->
trail = new_trail;
117 for (
const unsigned *
p = q;
p != old_end;
p++) {
118 const unsigned lit = *
p;
119 const unsigned idx =
IDX (
lit);
123 if (
level <= new_level) {
124 const unsigned new_trail = q -
trail;
126 a->
trail = new_trail;
139 solver->level = new_level;
140 LOG (
"unassigned %u literals", unassigned);
141 LOG (
"reassigned %u literals", reassigned);
142 (void) unassigned, (
void) reassigned;
145 LOG (
"propagation will resume at trail position %zu",
146 (
size_t) (new_end -
trail));
147 solver->propagate = new_end;
153 unsigned new_level) {
154 kissat_update_target_and_best_phases (
solver);
161 kissat_update_target_and_best_phases (
solver);
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
void kissat_backtrack_propagate_and_flush_trail(kissat *solver)
void kissat_backtrack_in_consistent_state(kissat *solver, unsigned new_level)
void kissat_backtrack_without_updating_phases(kissat *solver, unsigned new_level)
void kissat_backtrack_after_conflict(kissat *solver, unsigned new_level)
#define SET_END_OF_STACK(S, P)
ABC_NAMESPACE_IMPL_START typedef signed char value
#define KISSAT_assert(ignore)
void kissat_save_best_phases(kissat *solver)
void kissat_save_target_phases(kissat *solver)
#define kissat_extremely_verbose(...)
clause * kissat_probing_propagate(kissat *solver, clause *ignore, bool flush)
clause * kissat_search_propagate(kissat *solver)