47 lines
1.0 KiB
C
47 lines
1.0 KiB
C
|
#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;
|
||
|
}
|