#define INLINE_ASSIGN #include "inline.h" #include "proprobe.h" // Keep this 'inlined' file separate: #include "assign.c" #define PROPAGATE_LITERAL probing_propagate_literal #define PROPAGATION_TYPE "probing" #define PROBING_PROPAGATION #include "proplit.h" static clause * probing_propagate (kissat * solver, clause * ignore) { clause *res = 0; while (!res && solver->propagated < SIZE_STACK (solver->trail)) { const unsigned lit = PEEK_STACK (solver->trail, solver->propagated); res = probing_propagate_literal (solver, ignore, lit); solver->propagated++; } return res; } clause * kissat_probing_propagate (kissat * solver, clause * ignore) { assert (solver->probing); assert (solver->watching); assert (!solver->inconsistent); START (propagate); solver->ticks = 0; const unsigned propagated = solver->propagated; clause *conflict = probing_propagate (solver, ignore); kissat_update_probing_propagation_statistics (solver, propagated); STOP (propagate); return conflict; }