#include "inline.h"
#include "sort.c"
Go to the source code of this file.
◆ INLINE_SORT
◆ kissat_connect_irredundant_large_clauses()
| void kissat_connect_irredundant_large_clauses |
( |
kissat * | solver | ) |
|
Definition at line 171 of file watch.c.
171 {
173 LOG (
"connecting all large irredundant clauses");
174
175 clause *last_irredundant = kissat_last_irredundant_clause (
solver);
176
180
182 if (last_irredundant && c > last_irredundant)
183 break;
184 if (c->redundant)
185 continue;
186 if (c->garbage)
187 continue;
188 bool satisfied = false;
193 continue;
194 satisfied = true;
195 break;
196 }
197 if (satisfied) {
199 continue;
200 }
202 kissat_inlined_connect_clause (
solver, all_watches, c, ref);
203 }
204}
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)
#define all_literals_in_clause(LIT, C)
#define KISSAT_assert(ignore)
ABC_NAMESPACE_HEADER_START typedef unsigned reference
◆ kissat_flush_all_connected()
| void kissat_flush_all_connected |
( |
kissat * | solver | ) |
|
Definition at line 104 of file watch.c.
104 {
106 LOG (
"flush all connected binaries and clauses");
110}
#define all_literals(LIT)
#define RELEASE_WATCHES(WS)
◆ kissat_flush_large_connected()
| void kissat_flush_large_connected |
( |
kissat * | solver | ) |
|
Definition at line 206 of file watch.c.
206 {
208 LOG (
"flushing large connected clause references");
209 size_t flushed = 0;
214 while (
p != end_watches) {
217 *q++ = head;
218 else
219 flushed++;
220 }
222 }
223 LOG (
"flushed %zu large clause references", flushed);
224 (void) flushed;
225}
#define BEGIN_WATCHES(WS)
#define SET_END_OF_WATCHES(WS, P)
◆ kissat_flush_large_watches()
| void kissat_flush_large_watches |
( |
kissat * | solver | ) |
|
Definition at line 112 of file watch.c.
112 {
114 LOG (
"flush large clause watches");
116 signed char *marks =
solver->marks;
125 else {
127 if (marks[other]) {
131 }
132 q--;
133 } else
134 marks[other] = 1;
135 }
136 }
138 for (
p = begin;
p != q;
p++) {
140 marks[
p->binary.lit] = 0;
141 }
142 }
143}
void kissat_delete_binary(kissat *solver, unsigned a, unsigned b)
◆ kissat_remove_binary_watch()
Definition at line 8 of file watch.c.
9 {
14#ifndef KISSAT_NDEBUG
15 bool found = false;
16#endif
21 continue;
22 }
25 continue;
26#ifndef KISSAT_NDEBUG
28 found = true;
29#endif
30 q--;
31 }
33#ifdef KISSAT_COMPACT
35#else
38#endif
40 end[-1] = empty;
42 solver->vectors.usable += 1;
44}
#define INVALID_VECTOR_ELEMENT
#define kissat_check_vectors(...)
◆ kissat_remove_blocking_watch()
Definition at line 46 of file watch.c.
47 {
53#ifndef KISSAT_NDEBUG
54 bool found = false;
55#endif
57 const watch head = *q++ = *
p++;
59 continue;
60 const watch tail = *q++ = *
p++;
62 continue;
63#ifndef KISSAT_NDEBUG
65 found = true;
66#endif
67 q -= 2;
68 }
70#ifdef KISSAT_COMPACT
72#else
75#endif
77 end[-2] = end[-1] = empty;
79 solver->vectors.usable += 2;
81}
◆ kissat_substitute_large_watch()
Definition at line 83 of file watch.c.
84 {
88#ifndef KISSAT_NDEBUG
89 bool found = false;
90#endif
91 for (
watch *
p = begin;
p != end;
p++) {
94 continue;
95#ifndef KISSAT_NDEBUG
96 found = true;
97#endif
99 break;
100 }
102}
◆ kissat_watch_large_clauses()
| void kissat_watch_large_clauses |
( |
kissat * | solver | ) |
|
Definition at line 145 of file watch.c.
145 {
146 LOG (
"watching all large clauses");
148
153
155 if (c->garbage)
156 continue;
157
158 unsigned *lits = c->lits;
160 c->searched = 2;
161
163 const unsigned l0 = lits[0];
164 const unsigned l1 = lits[1];
165
168 }
169}
void kissat_sort_literals(struct kissat *, unsigned size, unsigned *lits)