ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
shrink.h File Reference
#include "global.h"
Include dependency graph for shrink.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

void kissat_shrink_clause (struct kissat *)
 

Function Documentation

◆ kissat_shrink_clause()

void kissat_shrink_clause ( struct kissat * solver)

Definition at line 362 of file shrink.c.

362 {
363 KISSAT_assert (GET_OPTION (minimize) > 0);
364 KISSAT_assert (GET_OPTION (shrink) > 0);
365 KISSAT_assert (!EMPTY_STACK (solver->clause));
366
367 START (shrink);
368
369 unsigned total_shrunken = 0;
370 unsigned total_minimized = 0;
371
372 unsigned *begin_lits = BEGIN_STACK (solver->clause);
373 unsigned *end_lits = END_STACK (solver->clause);
374
375 unsigned *end_block = END_STACK (solver->clause);
376
377 while (end_block != begin_lits)
378 end_block = minimize_and_shrink_block (
379 solver, begin_lits, end_block, &total_shrunken, &total_minimized);
380 unsigned *q = begin_lits;
381 for (const unsigned *p = q; p != end_lits; p++) {
382 const unsigned lit = *p;
383 if (lit != INVALID_LIT)
384 *q++ = lit;
385 }
386 LOG ("clause shrunken by %u literals (including %u minimized)",
387 total_shrunken, total_minimized);
388 KISSAT_assert (q + total_shrunken == end_lits);
389 SET_END_OF_STACK (solver->clause, q);
390 ADD (literals_shrunken, total_shrunken);
391 ADD (literals_minshrunken, total_minimized);
392
393 LOGTMP ("shrunken learned");
395
396 STOP (shrink);
397}
#define BEGIN_STACK(S)
Definition stack.h:46
#define EMPTY_STACK(S)
Definition stack.h:18
#define SET_END_OF_STACK(S, P)
Definition stack.h:62
#define END_STACK(S)
Definition stack.h:48
#define INVALID_LIT
#define ADD(NAME, DELTA)
#define LOG(...)
Cube * p
Definition exorList.c:222
#define KISSAT_assert(ignore)
Definition global.h:13
#define solver
Definition kitten.c:211
#define LOGTMP(...)
Definition logging.h:463
void kissat_reset_poisoned(kissat *solver)
Definition minimize.c:145
#define GET_OPTION(N)
Definition options.h:295
#define STOP(P)
Definition profile.hpp:158
#define START(P)
Definition profile.hpp:150
int lit
Definition satVec.h:130
Here is the call graph for this function:
Here is the caller graph for this function: