9static void inc_clause (
kissat *
solver,
bool original,
bool redundant,
14 INC (clauses_redundant);
16 INC (clauses_irredundant);
19 INC (clauses_original);
22static void dec_clause (
kissat *
solver,
bool redundant,
bool binary) {
26 DEC (clauses_redundant);
28 DEC (clauses_irredundant);
31static void init_clause (
clause *res,
bool redundant,
unsigned glue,
57 kissat_inlined_connect_clause (
solver, all_watches, c, ref);
63 kissat_inlined_connect_clause (
solver, all_watches, c, ref);
67 bool watch,
unsigned first,
72 kissat_watch_binary (
solver, first, second);
73 kissat_mark_added_literal (
solver, first);
74 kissat_mark_added_literal (
solver, second);
75 inc_clause (
solver, original,
false,
true);
84 bool redundant,
unsigned glue,
85 unsigned size,
unsigned *lits) {
88 clause *c = kissat_unchecked_dereference_clause (
solver, res);
89 init_clause (c, redundant, glue, size);
90 memcpy (c->
lits, lits, size * sizeof (
unsigned));
93 kissat_watch_reference (
solver, lits[0], lits[1], res);
98 solver->first_reducible = res;
101 solver->last_irredundant = res;
103 inc_clause (
solver, original, redundant,
false);
112 unsigned glue,
unsigned size,
unsigned *lits) {
115 res = new_binary_clause (
solver, original,
true, lits[0], lits[1]);
117 res = new_large_clause (
solver, original, redundant, glue, size, lits);
118 kissat_defrag_watches_if_needed (
solver);
124 (void) new_binary_clause (
solver,
false,
true, first, second);
129 (void) new_binary_clause (
solver,
false,
false, first, second);
143 return new_clause (
solver,
false,
false, 0, size, lits);
149 return new_clause (
solver,
false,
true, glue, size, lits);
166 mark_clause_as_garbage (
solver, c);
167 size_t bytes = kissat_actual_bytes_of_clause (c);
168 ADD (arena_garbage, bytes);
175 size_t bytes = kissat_actual_bytes_of_clause (c);
176 SUB (arena_garbage, bytes);
177 INC (clauses_deleted);
178 return (
clause *) ((
char *) c + bytes);
183 kissat_mark_removed_literal (
solver, a);
184 kissat_mark_removed_literal (
solver, b);
187 dec_clause (
solver,
false,
true);
188 INC (clauses_deleted);
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
reference kissat_allocate_clause(kissat *solver, size_t size)
#define REMOVE_CHECKER_CLAUSE(...)
#define CHECK_AND_ADD_BINARY(...)
#define CHECK_AND_ADD_CLAUSE(...)
#define REMOVE_CHECKER_BINARY(...)
reference kissat_new_redundant_clause(kissat *solver, unsigned glue)
reference kissat_new_irredundant_clause(kissat *solver)
void kissat_connect_referenced(kissat *solver, reference ref)
reference kissat_new_original_clause(kissat *solver)
void kissat_mark_clause_as_garbage(kissat *solver, clause *c)
void kissat_new_binary_clause(kissat *solver, unsigned first, unsigned second)
void kissat_connect_clause(kissat *solver, clause *c)
void kissat_new_unwatched_binary_clause(kissat *solver, unsigned first, unsigned second)
clause * kissat_delete_clause(kissat *solver, clause *c)
void kissat_delete_binary(kissat *solver, unsigned a, unsigned b)
void kissat_mark_removed_literals(kissat *solver, unsigned size, unsigned *lits)
void kissat_mark_added_literals(kissat *solver, unsigned size, unsigned *lits)
void kissat_sort_literals(struct kissat *, unsigned size, unsigned *lits)
#define KISSAT_assert(ignore)
#define ADD_BINARY_TO_PROOF(...)
#define ADD_CLAUSE_TO_PROOF(...)
#define DELETE_CLAUSE_FROM_PROOF(...)
#define DELETE_BINARY_FROM_PROOF(...)
ABC_NAMESPACE_HEADER_START typedef unsigned reference