#include "backtrack.h"
#include "analyze.h"
#include "inline.h"
#include "inlineheap.h"
#include "inlinequeue.h"
#include "print.h"
#include "proprobe.h"
#include "propsearch.h"
#include "trail.h"
Go to the source code of this file.
◆ kissat_backtrack_after_conflict()
| void kissat_backtrack_after_conflict |
( |
kissat * | solver, |
|
|
unsigned | new_level ) |
Definition at line 158 of file backtrack.c.
158 {
161 kissat_update_target_and_best_phases (
solver);
163}
void kissat_backtrack_without_updating_phases(kissat *solver, unsigned new_level)
◆ kissat_backtrack_in_consistent_state()
| void kissat_backtrack_in_consistent_state |
( |
kissat * | solver, |
|
|
unsigned | new_level ) |
Definition at line 152 of file backtrack.c.
153 {
154 kissat_update_target_and_best_phases (
solver);
156}
◆ kissat_backtrack_propagate_and_flush_trail()
| void kissat_backtrack_propagate_and_flush_trail |
( |
kissat * | solver | ) |
|
Definition at line 165 of file backtrack.c.
165 {
169#ifndef KISSAT_NDEBUG
171#endif
175 }
176
179}
void kissat_backtrack_in_consistent_state(kissat *solver, unsigned new_level)
#define KISSAT_assert(ignore)
clause * kissat_probing_propagate(kissat *solver, clause *ignore, bool flush)
clause * kissat_search_propagate(kissat *solver)
◆ kissat_backtrack_without_updating_phases()
| void kissat_backtrack_without_updating_phases |
( |
kissat * | solver, |
|
|
unsigned | new_level ) |
Definition at line 74 of file backtrack.c.
75 {
77 if (
solver->level == new_level)
78 return;
79
80 LOG (
"backtracking to decision level %u", new_level);
81
84
87 unsigned *new_end = trail + new_frame->
trail;
89
91 unsigned unassigned = 0, reassigned = 0;
92
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;
108 reassigned++;
109 } else {
112 unassigned++;
113 }
114 }
115 } else {
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;
129 reassigned++;
130 } else {
133 unassigned++;
134 }
135 }
136 }
138
139 solver->level = new_level;
140 LOG (
"unassigned %u literals", unassigned);
141 LOG (
"reassigned %u literals", reassigned);
142 (void) unassigned, (void) reassigned;
143
145 LOG (
"propagation will resume at trail position %zu",
146 (
size_t) (new_end -
trail));
147 solver->propagate = new_end;
148
150}
#define SET_END_OF_STACK(S, P)
ABC_NAMESPACE_IMPL_START typedef signed char value