10 const unsigned old_glue = c->
glue;
11 const unsigned new_glue = kissat_recompute_glue (
solver, c, old_glue);
12 if (new_glue < old_glue)
22 recompute_and_promote (
solver, c);
26 INC (clauses_used_stable);
28 INC (clauses_used_focused);
33 const unsigned old_glue = c->
glue;
34 const unsigned new_glue = kissat_recompute_glue (
solver, c, old_glue);
35 if (new_glue >= old_glue)
44 const unsigned idx =
IDX (
lit);
46 const unsigned level = a->
level;
53 kissat_push_analyzed (
solver, all_assigned, idx);
55#if defined(LOGGING) || !defined(KISSAT_NDEBUG)
59 if (level ==
solver->level)
64 frame *f = frames + level;
67 LOG (
"pulling in decision level %u", level);
77#if defined(LOGGING) || !defined(KISSAT_NDEBUG)
80 if (conflict->
size > 2)
81 mark_clause_as_used (
solver, conflict);
83 solver->antecedent_size = 0;
84 solver->resolvent_size = 0;
85 unsigned unresolved_on_current_level = 0, conflict_size = 0;
92 if (analyze_literal (
solver, all_assigned, frames,
lit))
93 unresolved_on_current_level++;
96 LOG (
"starting with %u unresolved literals on current decision level",
97 unresolved_on_current_level);
103 unsigned resolved = 0;
111 if (unresolved_on_current_level == 1)
115 solver->antecedent_size = 1;
118 const unsigned other = a->
reason;
120 if (analyze_literal (
solver, all_assigned, frames, other))
121 unresolved_on_current_level++;
125 clause *reason = kissat_dereference_clause (
solver, ref);
128 analyze_literal (
solver, all_assigned, frames,
lit))
129 unresolved_on_current_level++;
130 mark_clause_as_used (
solver, reason);
133 unresolved_on_current_level--;
134 LOG (
"after resolving %s there are %u literals left "
135 "on current decision level",
136 LOGLIT (uip), unresolved_on_current_level);
139#if defined(LOGGING) || !defined(KISSAT_NDEBUG)
140 LOG2 (
"actual antecedent size %u",
solver->antecedent_size);
145 if (otfs &&
solver->antecedent_size > 2 &&
152 if (resolved == 1 &&
solver->resolvent_size < conflict_size) {
162 LOG (
"first unique implication point %s (1st UIP)",
LOGLIT (uip));
165 LOGTMP (
"deduced not yet minimized 1st UIP");
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
#define REMOVE_STACK(T, S, E)
#define POKE_STACK(S, N, E)
bool kissat_recompute_and_promote(kissat *solver, clause *c)
clause * kissat_deduce_first_uip_clause(kissat *solver, clause *conflict)
#define all_literals_in_clause(LIT, C)
#define KISSAT_assert(ignore)
ABC_NAMESPACE_HEADER_START typedef unsigned reference
void kissat_on_the_fly_subsume(kissat *solver, clause *c, clause *d)
clause * kissat_on_the_fly_strengthen(kissat *solver, clause *c, unsigned lit)