301 {
303 return;
308 return;
310 return;
312 INC (transitive_reductions);
313#if !defined(KISSAT_NDEBUG) || defined(METRICS)
315 solver->transitive_reducing =
true;
316#endif
317 prioritize_binaries (
solver);
318 bool success = false;
319 uint64_t reduced = 0;
320 unsigned units = 0;
321
323
324#ifndef KISSAT_QUIET
325 const unsigned active =
solver->active;
326 const uint64_t old_ticks =
solver->statistics_.transitive_ticks;
328 solver,
"starting with %" PRIu64
" transitive ticks", old_ticks);
329 unsigned probed = 0;
330#endif
331 unsigneds probes;
333 schedule_transitive (
solver, &probes);
334 bool terminate = false;
337 solver->flags[idx].transitive =
false;
339 continue;
340 for (
unsigned sign = 0; !terminate &&
sign < 2;
sign++) {
341 const unsigned lit = 2 * idx +
sign;
343 continue;
344#ifndef KISSAT_QUIET
345 probed++;
346#endif
347 if (transitive_reduce (
solver,
lit, limit, &reduced, &units))
348 success = true;
350 terminate = true;
351 else if (
solver->statistics_.transitive_ticks > limit)
352 terminate = true;
354 terminate = true;
355 }
356 }
358 if (remain) {
361 solver,
"dropping remaining %zu transitive candidates", remain);
364 solver->flags[idx].transitive =
false;
365 }
366 }
367 } else
370
371#ifndef KISSAT_QUIET
372 const uint64_t new_ticks =
solver->statistics_.transitive_ticks;
373 const uint64_t delta_ticks = new_ticks - old_ticks;
375 solver,
"finished at %" PRIu64
" after %" PRIu64
" transitive ticks",
376 new_ticks, delta_ticks);
377#endif
379 "probed %u (%.0f%%): reduced %" PRIu64 ", units %u", probed,
380 kissat_percent (probed, 2 * active), reduced, units);
381
382#if !defined(KISSAT_NDEBUG) || defined(METRICS)
384 solver->transitive_reducing =
false;
385#endif
388#ifdef KISSAT_QUIET
389 (void) success;
390#endif
391}
#define KISSAT_assert(ignore)
#define SET_EFFORT_LIMIT(LIMIT, NAME, THRESHHOLD)
#define kissat_extremely_verbose(...)
#define kissat_very_verbose(...)
#define kissat_phase(...)
#define transitive_terminated_2
#define transitive_terminated_3