1#ifndef _limits_h_INCLUDED
2#define _limits_h_INCLUDED
107#define LOGN(COUNT) kissat_logn (COUNT)
108#define LINEAR(COUNT) (COUNT)
109#define NLOGN(COUNT) kissat_nlogpown (COUNT, 1)
110#define NLOG2N(COUNT) kissat_nlogpown (COUNT, 2)
111#define NLOG3N(COUNT) kissat_nlogpown (COUNT, 3)
113#define SQRT(COUNT) kissat_sqrt (COUNT)
115#define UPDATE_CONFLICT_LIMIT(NAME, COUNT, SCALE_COUNT_FUNCTION, \
118 if (solver->inconsistent) \
120 const struct statistics *statistics = &solver->statistics_; \
121 KISSAT_assert (statistics->COUNT > 0); \
122 struct limits *limits = &solver->limits; \
123 uint64_t DELTA = GET_OPTION (NAME##int); \
124 const double SCALING = SCALE_COUNT_FUNCTION (statistics->COUNT); \
125 KISSAT_assert (SCALING >= 1); \
127 const uint64_t SCALED = \
128 !(SCALE_DELTA) ? DELTA \
129 : kissat_scale_delta (solver, #NAME, DELTA); \
130 limits->NAME.conflicts = CONFLICTS + SCALED; \
132 solver, #NAME, GET (COUNT), "new limit of %s after %s conflicts", \
133 FORMAT_COUNT (limits->NAME.conflicts), FORMAT_COUNT (SCALED)); \
138#define SET_EFFORT_LIMIT(LIMIT, NAME, START) \
141 const uint64_t OLD_LIMIT = solver->statistics_.START; \
142 const uint64_t TICKS = solver->statistics_.search_ticks; \
143 const uint64_t LAST = solver->probing ? solver->last.ticks.probe \
144 : solver->last.ticks.eliminate; \
145 uint64_t REFERENCE = TICKS - LAST; \
146 const uint64_t MINEFFORT = 1e6 * GET_OPTION (mineffort); \
147 if (REFERENCE < MINEFFORT) { \
148 REFERENCE = MINEFFORT; \
149 kissat_extremely_verbose ( \
150 solver, #NAME " effort reference %s set to 'mineffort'", \
151 FORMAT_COUNT (REFERENCE)); \
153 kissat_extremely_verbose ( \
154 solver, #NAME " effort reference %s = %s - %s 'search_ticks'", \
155 FORMAT_COUNT (REFERENCE), FORMAT_COUNT (TICKS), \
156 FORMAT_COUNT (LAST)); \
158 const double EFFORT = (double) GET_OPTION (NAME##effort) * 1e-3; \
159 const uint64_t DELTA = EFFORT * REFERENCE; \
161 kissat_extremely_verbose ( \
162 solver, #NAME " effort delta %s = %g * %s '" #START "'", \
163 FORMAT_COUNT (DELTA), EFFORT, FORMAT_COUNT (REFERENCE)); \
165 const uint64_t NEW_LIMIT = OLD_LIMIT + DELTA; \
166 kissat_very_verbose (solver, \
167 #NAME " effort limit %s = %s + %s '" #START "'", \
168 FORMAT_COUNT (NEW_LIMIT), \
169 FORMAT_COUNT (OLD_LIMIT), FORMAT_COUNT (DELTA)); \
181#define DELAYING(NAME) kissat_delaying (solver, &solver->delays.NAME)
183#define BUMP_DELAY(NAME) kissat_bump_delay (solver, &solver->delays.NAME)
185#define REDUCE_DELAY(NAME) \
186 kissat_reduce_delay (solver, &solver->delays.NAME)
#define ABC_NAMESPACE_HEADER_END
#define ABC_NAMESPACE_HEADER_START
NAMESPACES ///.
double kissat_nlogpown(uint64_t, unsigned)
double kissat_sqrt(uint64_t)
bool kissat_changed(changes before, changes after)
bool kissat_delaying(struct kissat *, delay *)
void kissat_reduce_delay(struct kissat *, delay *)
double kissat_logn(uint64_t)
void kissat_init_limits(struct kissat *)
void kissat_bump_delay(struct kissat *, delay *)
uint64_t kissat_scale_delta(struct kissat *, const char *, uint64_t)
changes kissat_changes(struct kissat *)
unsigned additional_clauses
uint64_t max_bound_completed
struct limits::@317277023072347355124305102271146250361353123031 reorder
struct limits::@336173321371005365235017277110361226275162111066 factor
struct limits::@317277023072347355124305102271146250361353123031 rephase
struct limits::@271324207010226176325073032231173072040043014112::@231176167003026031007234272206131127217014330205 variables
struct limits::@150155370044277342257066124252327376226075374113 glue
struct limits::@317277023072347355124305102271146250361353123031 restart
struct limits::@317277023072347355124305102271146250361353123031 randec
struct remember::@203010231015261151103375260002344013164314222322 conflicts
struct remember::@232377244237173041170307101001235325057336237333 ticks