6static inline bool non_watching_propagate_literal (
kissat *
solver,
11 const unsigned not_lit =
NOT (
lit);
15 unsigned ticks = 1 + kissat_cache_lines (size_watches,
sizeof (
watch));
26 const value other_value = values[other];
29 if (other_value < 0) {
30 LOGBINARY (not_lit, other,
"conflicting");
33 const unsigned other_idx =
IDX (other);
34 if (
flags[other_idx].eliminated)
37 kissat_fast_binary_assign (
solver,
solver->probing, 0, values,
48 unsigned non_false = 0;
50 bool satisfied =
false;
55 const value other_value = values[other];
58 if (other_value > 0) {
67 else if (non_false > 1)
73 LOGREF (ref,
"conflicting");
83 ADD (dense_ticks, ticks);
93 unsigned *propagate =
solver->propagate;
96 res = non_watching_propagate_literal (
solver, *propagate++);
97 const unsigned propagated = propagate -
solver->propagate;
98 solver->propagate = propagate;
99 ADD (dense_propagations, propagated);
100 ADD (propagations, propagated);
103 LOG (
"inconsistent root propagation");
106 solver->inconsistent =
true;
#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
#define CHECK_AND_ADD_EMPTY(...)
void kissat_mark_clause_as_garbage(kissat *solver, clause *c)
#define all_literals_in_clause(LIT, C)
#define KISSAT_assert(ignore)
#define ADD_EMPTY_TO_PROOF(...)
bool kissat_dense_propagate(kissat *solver)
ABC_NAMESPACE_HEADER_START typedef unsigned reference
#define VALID_INTERNAL_LITERAL(LIT)
#define all_binary_large_watches(WATCH, WATCHES)