00001
00021 #include <stdio.h>
00022 #include <assert.h>
00023 #include "satSolver.h"
00024
00025
00026
00027
00028
00029
00030
00031
00035
00036
00040
00052 void Sat_SolverTraceStart( sat_solver * pSat, char * pName )
00053 {
00054 assert( pSat->pFile == NULL );
00055 pSat->pFile = fopen( pName, "w" );
00056 fprintf( pSat->pFile, " \n" );
00057 pSat->nClauses = 0;
00058 pSat->nRoots = 0;
00059 }
00060
00072 void Sat_SolverTraceStop( sat_solver * pSat )
00073 {
00074 if ( pSat->pFile == NULL )
00075 return;
00076 rewind( pSat->pFile );
00077 fprintf( pSat->pFile, "p %d %d %d", sat_solver_nvars(pSat), pSat->nClauses, pSat->nRoots );
00078 fclose( pSat->pFile );
00079 pSat->pFile = NULL;
00080 }
00081
00082
00094 void Sat_SolverTraceWrite( sat_solver * pSat, int * pBeg, int * pEnd, int fRoot )
00095 {
00096 if ( pSat->pFile == NULL )
00097 return;
00098 pSat->nClauses++;
00099 pSat->nRoots += fRoot;
00100 for ( ; pBeg < pEnd ; pBeg++ )
00101 fprintf( pSat->pFile, " %d", lit_print(*pBeg) );
00102 fprintf( pSat->pFile, " 0\n" );
00103 }
00104
00108
00109