#ifndef SATFRONT_HEADER_INCLUDED #include #define FALESAT_VERSION_NAME "FaleSAT" #define FALESAT_VERSION_NUMBER "1.0.0" #define USE_UNSAT_TRACKING 0 #define USE_MOBILITY_TRACKING 0 #define USE_ASSIGNMENT_TRACKING 0 typedef struct { char *problemFilename; int numIntParams; char **intParamNames; char **intParamDescs; int *intParams; int numDoubleParams; char **doubleParamNames; char **doubleParamDescs; double *doubleParams; int numStringParams; char **stringParamNames; char **stringParamDescs; char **stringParams; } SATParams; typedef struct { int numFlips; int numReweights; int numRestarts; int isSatisfied; int numSatisfied; int numClauses; int unsatSum; int unsatBufferLength; int *unsatFlipCounts; int *mobilityWindow; int currentWindowLength; int windowStart; int mobilityWindowLength; int sumMobility; double avgMobility; FILE *assignOut; int firstAssign; int firstRepeat; int maxAssigns; int assignCount; int maxAssignRepeats; int repeatCount; int unsatFlipSkip; } SATResults; int main(int argc, char *argv[]); void showUsage(SATParams *params); void freeParams(SATParams *params); void freeResults(SATResults *results); int compareInt(const void *a, const void *b); void showVersion(FILE *outFile); /* These functions must be implemented by the backend. */ SATParams *getSATParams(); void preSolve(SATParams *params); void runSolver(SATParams *params, SATResults *results); void postSolve(SATParams *params); char *getSolverIdentity(); #define SATFRONT_HEADER_INCLUDED #endif