42 solver->vectors.usable += 1;
57 const watch head = *q++ = *
p++;
60 const watch tail = *q++ = *
p++;
77 end[-2] = end[-1] = empty;
79 solver->vectors.usable += 2;
91 for (
watch *
p = begin;
p != end;
p++) {
106 LOG (
"flush all connected binaries and clauses");
114 LOG (
"flush large clause watches");
116 signed char *marks =
solver->marks;
138 for (
p = begin;
p != q;
p++) {
140 marks[
p->binary.lit] = 0;
146 LOG (
"watching all large clauses");
158 unsigned *lits = c->lits;
163 const unsigned l0 = lits[0];
164 const unsigned l1 = lits[1];
173 LOG (
"connecting all large irredundant clauses");
175 clause *last_irredundant = kissat_last_irredundant_clause (
solver);
182 if (last_irredundant && c > last_irredundant)
188 bool satisfied =
false;
202 kissat_inlined_connect_clause (
solver, all_watches, c, ref);
208 LOG (
"flushing large connected clause references");
214 while (
p != end_watches) {
223 LOG (
"flushed %zu large clause references", flushed);
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
ABC_NAMESPACE_HEADER_START typedef word ward
ABC_NAMESPACE_IMPL_START typedef signed char value
void kissat_mark_clause_as_garbage(kissat *solver, clause *c)
void kissat_delete_binary(kissat *solver, unsigned a, unsigned b)
#define all_literals(LIT)
void kissat_sort_literals(struct kissat *, unsigned size, unsigned *lits)
#define all_literals_in_clause(LIT, C)
#define KISSAT_assert(ignore)
ABC_NAMESPACE_HEADER_START typedef unsigned reference
#define INVALID_VECTOR_ELEMENT
#define kissat_check_vectors(...)
void kissat_connect_irredundant_large_clauses(kissat *solver)
void kissat_watch_large_clauses(kissat *solver)
ABC_NAMESPACE_IMPL_START void kissat_remove_binary_watch(kissat *solver, watches *watches, unsigned lit)
void kissat_flush_large_watches(kissat *solver)
void kissat_remove_blocking_watch(kissat *solver, watches *watches, reference ref)
void kissat_flush_all_connected(kissat *solver)
void kissat_flush_large_connected(kissat *solver)
void kissat_substitute_large_watch(kissat *solver, watches *watches, watch src, watch dst)
#define BEGIN_WATCHES(WS)
#define RELEASE_WATCHES(WS)
#define SET_END_OF_WATCHES(WS, P)