74 s->
vWatches = xSAT_VecWatchListAlloc( 0 );
78 s->
vTrail = Vec_IntAlloc( 0 );
84 s->
vTags = Vec_StrAlloc( 0 );
88 s->
vStamp = Vec_IntAlloc( 0 );
91 s->
vStack = Vec_IntAlloc(0);
93 s->
vSeen = Vec_StrAlloc( 0 );
126 xSAT_VecWatchListFree( s->
vWatches );
135 Vec_StrFree( s->
vSeen );
141 Vec_StrFree( s->
vTags );
147 xSAT_BQueueFree(s->
bqLBD);
168 assert( xSAT_SolverDecisionLevel(s) == 0 );
180 if ( xSAT_SolverIsClauseSatisfied( s, pCla ) )
185 if ( pCla->nSize == 2 )
187 xSAT_WatchListRemove( xSAT_VecWatchListEntry( s->
vBinWatches, xSAT_NegLit(pCla->pData[0].Lit) ), CRef );
188 xSAT_WatchListRemove( xSAT_VecWatchListEntry( s->
vBinWatches, xSAT_NegLit(pCla->pData[1].Lit) ), CRef );
192 xSAT_WatchListRemove( xSAT_VecWatchListEntry( s->
vWatches, xSAT_NegLit(pCla->pData[0].Lit) ), CRef );
193 xSAT_WatchListRemove( xSAT_VecWatchListEntry( s->
vWatches, xSAT_NegLit(pCla->pData[1].Lit) ), CRef );
197 Vec_IntWriteEntry( s->
vClauses, j++, CRef );
223 xSAT_VecWatchListPush( s->
vWatches );
224 xSAT_VecWatchListPush( s->
vWatches );
232 Vec_StrPush( s->
vTags, 0 );
234 Vec_IntPush( s->
vStamp, 0 );
235 Vec_StrPush( s->
vSeen, 0 );
257 Vec_IntSort( vLits, 0 );
258 MaxVar = xSAT_Lit2Var( Vec_IntEntryLast( vLits ) );
259 while ( MaxVar >= Vec_IntSize( s->
vActivity ) )
266 if ( Lit == xSAT_NegLit( PrevLit ) || Vec_StrEntry( s->
vAssigns, xSAT_Lit2Var( Lit ) ) == xSAT_LitSign( Lit ) )
268 else if ( Lit != PrevLit && Vec_StrEntry( s->
vAssigns, xSAT_Lit2Var( Lit ) ) ==
VarX )
271 Vec_IntWriteEntry( vLits, j++, Lit );
274 Vec_IntShrink( vLits, j );
276 if ( Vec_IntSize( vLits ) == 0 )
278 if ( Vec_IntSize( vLits ) == 1 )
306 printf(
"==========================================[ BLACK MAGIC ]================================================\n" );
307 printf(
"| | | |\n" );
308 printf(
"| - Restarts: | - Reduce Clause DB: | - Minimize Asserting: |\n" );
313 printf(
"| | | |\n" );
314 printf(
"=========================================================================================================\n" );
321 printf(
"=========================================================================================================\n" );
#define ABC_CALLOC(type, num)
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
unsigned nLBDFrozenClause
xSAT_SolverOptions_t Config
xSAT_VecWatchList_t * vWatches
Vec_Int_t * vLearntClause
xSAT_VecWatchList_t * vBinWatches
#define Vec_IntForEachEntry(vVec, Entry, i)
MACRO DEFINITIONS ///.
typedefABC_NAMESPACE_HEADER_START struct xSAT_Clause_t_ xSAT_Clause_t
INCLUDES ///.
int xSAT_SolverSolve(xSAT_Solver_t *s)
xSAT_Solver_t * xSAT_SolverCreate()
int xSAT_SolverSimplify(xSAT_Solver_t *s)
ABC_NAMESPACE_IMPL_START xSAT_SolverOptions_t DefaultConfig
INCLUDES ///.
void xSAT_SolverPrintStats(xSAT_Solver_t *s)
int xSAT_SolverAddClause(xSAT_Solver_t *s, Vec_Int_t *vLits)
void xSAT_SolverDestroy(xSAT_Solver_t *s)
void xSAT_SolverAddVariable(xSAT_Solver_t *s, int Sign)
void xSAT_SolverRebuildOrderHeap(xSAT_Solver_t *s)
void xSAT_SolverCancelUntil(xSAT_Solver_t *s, int Level)
int xSAT_SolverEnqueue(xSAT_Solver_t *s, int Lit, unsigned Reason)
char xSAT_SolverSearch(xSAT_Solver_t *s)
unsigned xSAT_SolverPropagate(xSAT_Solver_t *s)
unsigned xSAT_SolverClaNew(xSAT_Solver_t *s, Vec_Int_t *vLits, int fLearnt)
FUNCTION DECLARATIONS ///.
struct xSAT_SolverOptions_t_ xSAT_SolverOptions_t
STRUCTURE DEFINITIONS ///.
struct xSAT_Solver_t_ xSAT_Solver_t