1#ifndef _inline_h_INCLUDED
2#define _inline_h_INCLUDED
13 return solver->statistics.allocated_current;
24static inline bool kissat_trail_flushed (
kissat *
solver) {
28static inline void kissat_reset_propagate (
kissat *
solver) {
42static inline void kissat_mark_removed_literal (
kissat *
solver,
44 const unsigned idx =
IDX (
lit);
49 LOG (
"marking %s to be eliminated", LOGVAR (idx));
51 INC (variables_eliminate);
55static inline void kissat_mark_added_literal (
kissat *
solver,
57 const unsigned idx =
IDX (
lit);
60 LOG (
"marking %s to forward subsume", LOGVAR (idx));
62 INC (variables_subsume);
68 INC (literals_factor);
78static inline void kissat_push_binary_watch (
kissat *
solver,
81 const watch watch = kissat_binary_watch (other);
85static inline void kissat_push_blocking_watch (
kissat *
solver,
90 const watch head = kissat_blocking_watch (blocking);
92 const watch tail = kissat_large_watch (ref);
104static inline void kissat_watch_binary (
kissat *
solver,
unsigned a,
106 kissat_watch_other (
solver, a, b);
107 kissat_watch_other (
solver, b, a);
120static inline void kissat_unwatch_blocking (
kissat *
solver,
unsigned lit,
128static inline void kissat_disconnect_binary (
kissat *
solver,
unsigned lit,
132 const watch watch = kissat_binary_watch (other);
145static inline void kissat_watch_reference (
kissat *
solver,
unsigned a,
148 kissat_watch_blocking (
solver, a, b, ref);
149 kissat_watch_blocking (
solver, b, a, ref);
152static inline void kissat_connect_literal (
kissat *
solver,
unsigned lit,
167 clause *res = kissat_unchecked_dereference_clause (
solver, ref);
178static inline void kissat_inlined_connect_clause (
kissat *
solver,
190 kissat_push_large_watch (
solver, lit_watches, ref);
200static inline int kissat_export_literal (
kissat *
solver,
unsigned ilit) {
201 const unsigned iidx =
IDX (ilit);
212static inline unsigned kissat_map_literal (
kissat *
solver,
unsigned ilit,
216 int elit = kissat_export_literal (
solver, ilit);
219 const unsigned eidx =
ABS (elit);
220 const import *const import = &PEEK_STACK (solver->import, eidx);
223 unsigned mlit =
import->lit;
232 : kissat_dereference_clause (
solver,
solver->last_irredundant);
240 unsigned *lits = res->
lits;
253 LOG2 (
"%s analyzed", LOGVAR (idx));
267 LOG2 (
"%s removable", LOGVAR (idx));
277 LOG2 (
"%s poisoned", LOGVAR (idx));
287 LOG2 (
"%s shrinkable", LOGVAR (idx));
292#ifdef KISSAT_NOPTIONS
304#ifdef KISSAT_NOPTIONS
319 return solver->proof != 0;
323static inline bool kissat_checking_or_proving (
kissat *
solver) {
324 return kissat_checking (
solver) || kissat_proving (
solver);
327#if !defined(KISSAT_NDEBUG) || !defined(KISSAT_NPROOFS)
328#define CHECKING_OR_PROVING
#define ABC_NAMESPACE_HEADER_END
#define ABC_NAMESPACE_HEADER_START
NAMESPACES ///.
ABC_NAMESPACE_HEADER_START typedef word ward
ABC_NAMESPACE_IMPL_START typedef signed char value
#define all_literals_in_clause(LIT, C)
#define KISSAT_assert(ignore)
ABC_NAMESPACE_HEADER_START typedef unsigned reference
#define VALID_EXTERNAL_LITERAL(LIT)
void kissat_remove_blocking_watch(kissat *solver, watches *watches, reference ref)
#define PUSH_WATCHES(W, E)
#define REMOVE_WATCHES(W, E)