#include "eliminate.h"
#include "allocate.h"
#include "backtrack.h"
#include "collect.h"
#include "dense.h"
#include "forward.h"
#include "inline.h"
#include "inlineheap.h"
#include "kitten.h"
#include "print.h"
#include "propdense.h"
#include "report.h"
#include "resolve.h"
#include "terminate.h"
#include "trail.h"
#include "weaken.h"
#include <inttypes.h>
#include <math.h>
Go to the source code of this file.
◆ kissat_eliminate()
| int kissat_eliminate |
( |
kissat * | solver | ) |
|
Definition at line 597 of file eliminate.c.
597 {
603 solver->last.ticks.eliminate =
solver->statistics_.search_ticks;
604 return solver->inconsistent ? 20 : 0;
605}
ABC_NAMESPACE_IMPL_START void kissat_classify(struct kissat *solver)
#define UPDATE_CONFLICT_LIMIT(NAME, COUNT, SCALE_COUNT_FUNCTION, SCALE_DELTA)
#define KISSAT_assert(ignore)
◆ kissat_eliminate_binary()
| void kissat_eliminate_binary |
( |
kissat * | solver, |
|
|
unsigned | lit, |
|
|
unsigned | other ) |
Definition at line 121 of file eliminate.c.
122 {
123 kissat_disconnect_binary (
solver, other,
lit);
125 update_after_removing_variable (
solver,
IDX (other));
126}
void kissat_delete_binary(kissat *solver, unsigned a, unsigned b)
◆ kissat_eliminate_clause()
| void kissat_eliminate_clause |
( |
kissat * | solver, |
|
|
clause * | c, |
|
|
unsigned | lit ) |
Definition at line 128 of file eliminate.c.
128 {
130 update_after_removing_clause (
solver, c,
lit);
131}
void kissat_mark_clause_as_garbage(kissat *solver, clause *c)
◆ kissat_eliminating()
Definition at line 23 of file eliminate.c.
23 {
24 if (!
solver->enabled.eliminate)
25 return false;
28 return false;
29 const uint64_t conflicts =
statistics->conflicts;
30 if (
solver->last.conflicts.reduce == conflicts)
31 return false;
34 return false;
37 return true;
39 return true;
40 return false;
41}
◆ kissat_flush_units_while_connected()
| void kissat_flush_units_while_connected |
( |
kissat * | solver | ) |
|
Definition at line 162 of file eliminate.c.
162 {
163 const unsigned *propagate =
solver->propagate;
166 const size_t units = end_trail - propagate;
167 if (!units)
168 return;
169#ifdef LOGGING
170 LOG (
"propagating and flushing %zu units", units);
171#endif
173 return;
174 LOG (
"marking and flushing unit satisfied clauses");
175
177 while (propagate != end_trail) {
178 const unsigned unit = *propagate++;
182 if (begin == end)
183 continue;
184 LOG (
"marking %s satisfied clauses as garbage",
LOGLIT (unit));
189 if (!
solver->values[other])
190 update_after_removing_variable (
solver,
IDX (other));
191 } else {
197 q--;
198 }
199 }
201 size_t flushed = end - q;
202 if (!flushed)
203 continue;
204 LOG (
"flushing %zu references satisfied by %s", flushed,
LOGLIT (unit));
206 }
207}
void kissat_eliminate_clause(kissat *solver, clause *c, unsigned lit)
bool kissat_dense_propagate(kissat *solver)
ABC_NAMESPACE_HEADER_START typedef unsigned reference
#define BEGIN_WATCHES(WS)
#define SET_END_OF_WATCHES(WS, P)
◆ kissat_update_variable_score()
| void kissat_update_variable_score |
( |
kissat * | solver, |
|
|
unsigned | idx ) |