30 for (
unsigned stable = 0; stable != 2; stable++) {
31 if (!
solver->tier1[stable]) {
37 LOG (
"initialized tier1[%u] glue to %u", stable,
39 LOG (
"initialized tier2[%u] glue to %u", stable,
41 if (!
solver->limits.glue.interval)
42 solver->limits.glue.interval = 2;
55 "initializing %s search after %" PRIu64
" conflicts",
56 (stable ?
"stable" :
"focus"),
CONFLICTS);
73 LOG (
"initialized random number generator with seed %u", seed);
82 solver,
"starting search with conflicts limited to %" PRIu64,
86 solver,
"starting search with decisions limited to %" PRIu64,
91 "starting search with decisions limited to %" PRIu64
92 " and conflicts limited to %" PRIu64,
105 if (
solver->limited.conflicts) {
106 LOG (
"reset conflict limit");
107 solver->limited.conflicts =
false;
110 if (
solver->limited.decisions) {
111 LOG (
"reset decision limit");
112 solver->limited.decisions =
false;
115 if (
solver->termination.flagged) {
117 solver->termination.flagged = 0;
131static void report_search_result (
kissat *
solver,
int res) {
133 LOG (
"search result %d", res);
134 char type = (res == 10 ?
'1' : res == 20 ?
'0' :
'?');
137 (void)
solver, (
void) res;
143 solver->iterating =
false;
148 if (!
solver->limited.conflicts)
150 if (
solver->limits.conflicts >
solver->statistics_.conflicts)
153 solver,
"conflict limit %" PRIu64
" hit after %" PRIu64
" conflicts",
154 solver->limits.conflicts,
solver->statistics_.conflicts);
159 if (!
solver->limited.decisions)
161 if (
solver->limits.decisions >
solver->statistics_.decisions)
164 solver,
"decision limit %" PRIu64
" hit after %" PRIu64
" decisions",
165 solver->limits.decisions,
solver->statistics_.decisions);
170 if (!kissat_propagated (
solver))
176 if (conflict_limit_hit (
solver))
194 if (!res && searching (
solver)) {
200 else if (
solver->iterating)
202 else if (!
solver->unassigned)
220 else if (conflict_limit_hit (
solver))
222 else if (decision_limit_hit (
solver))
229 report_search_result (
solver, res);
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
int kissat_analyze(kissat *solver, clause *conflict)
ABC_NAMESPACE_IMPL_START void kissat_init_averages(kissat *solver, averages *averages)
void kissat_update_scores(kissat *solver)
ABC_NAMESPACE_IMPL_START void kissat_classify(struct kissat *solver)
void kissat_decide(kissat *solver)
ABC_NAMESPACE_IMPL_START bool kissat_eliminating(kissat *solver)
int kissat_eliminate(kissat *solver)
type
CUBE COVER and CUBE typedefs ///.
void kissat_init_limits(kissat *solver)
#define KISSAT_assert(ignore)
int kissat_lucky(struct kissat *solver)
void kissat_switch_search_mode(kissat *solver)
bool kissat_switching_search_mode(kissat *solver)
ABC_NAMESPACE_IMPL_START bool kissat_preprocessing(struct kissat *solver)
int kissat_preprocess(struct kissat *solver)
#define kissat_very_verbose(...)
#define kissat_phase(...)
int kissat_probe(kissat *solver)
ABC_NAMESPACE_IMPL_START bool kissat_probing(kissat *solver)
clause * kissat_search_propagate(kissat *solver)
void kissat_init_reluctant(kissat *solver)
void kissat_reorder(kissat *solver)
ABC_NAMESPACE_IMPL_START bool kissat_reordering(kissat *solver)
void kissat_rephase(kissat *solver)
bool kissat_rephasing(kissat *solver)
ABC_NAMESPACE_IMPL_START bool kissat_restarting(kissat *solver)
void kissat_restart(kissat *solver)
int kissat_reduce(kissat *solver)
ABC_NAMESPACE_IMPL_START bool kissat_reducing(kissat *solver)
int kissat_search(kissat *solver)
#define search_terminated_1