Commit 123b4250 by Bruno Schmitt

Fixes to make xSAT compile with old compilers.

Small typos and variables renaming.
parent cb49c5d0
...@@ -24,7 +24,6 @@ ...@@ -24,7 +24,6 @@
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
/// INCLUDES /// /// INCLUDES ///
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
#include "misc/util/abc_global.h" #include "misc/util/abc_global.h"
ABC_NAMESPACE_HEADER_START ABC_NAMESPACE_HEADER_START
...@@ -32,7 +31,6 @@ ABC_NAMESPACE_HEADER_START ...@@ -32,7 +31,6 @@ ABC_NAMESPACE_HEADER_START
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
/// STRUCTURE DEFINITIONS /// /// STRUCTURE DEFINITIONS ///
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
typedef struct xSAT_BQueue_t_ xSAT_BQueue_t; typedef struct xSAT_BQueue_t_ xSAT_BQueue_t;
struct xSAT_BQueue_t_ struct xSAT_BQueue_t_
{ {
...@@ -41,13 +39,12 @@ struct xSAT_BQueue_t_ ...@@ -41,13 +39,12 @@ struct xSAT_BQueue_t_
int iFirst; int iFirst;
int iEmpty; int iEmpty;
word nSum; word nSum;
word * pData; unsigned * pData;
}; };
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
/// FUNCTION DECLARATIONS /// /// FUNCTION DECLARATIONS ///
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
/**Function************************************************************* /**Function*************************************************************
Synopsis [] Synopsis []
...@@ -63,7 +60,7 @@ static inline xSAT_BQueue_t * xSAT_BQueueNew( int nCap ) ...@@ -63,7 +60,7 @@ static inline xSAT_BQueue_t * xSAT_BQueueNew( int nCap )
{ {
xSAT_BQueue_t * p = ABC_CALLOC( xSAT_BQueue_t, 1 ); xSAT_BQueue_t * p = ABC_CALLOC( xSAT_BQueue_t, 1 );
p->nCap = nCap; p->nCap = nCap;
p->pData = ABC_CALLOC( word, nCap ); p->pData = ABC_CALLOC( unsigned, nCap );
return p; return p;
} }
...@@ -95,7 +92,7 @@ static inline void xSAT_BQueueFree( xSAT_BQueue_t * p ) ...@@ -95,7 +92,7 @@ static inline void xSAT_BQueueFree( xSAT_BQueue_t * p )
SeeAlso [] SeeAlso []
***********************************************************************/ ***********************************************************************/
static inline void xSAT_BQueuePush( xSAT_BQueue_t * p, word Value ) static inline void xSAT_BQueuePush( xSAT_BQueue_t * p, unsigned Value )
{ {
if ( p->nSize == p->nCap ) if ( p->nSize == p->nCap )
{ {
...@@ -128,8 +125,8 @@ static inline void xSAT_BQueuePush( xSAT_BQueue_t * p, word Value ) ...@@ -128,8 +125,8 @@ static inline void xSAT_BQueuePush( xSAT_BQueue_t * p, word Value )
***********************************************************************/ ***********************************************************************/
static inline int xSAT_BQueuePop( xSAT_BQueue_t * p ) static inline int xSAT_BQueuePop( xSAT_BQueue_t * p )
{ {
int RetValue = p->pData[p->iFirst];
assert( p->nSize >= 1 ); assert( p->nSize >= 1 );
int RetValue = p->pData[p->iFirst];
p->nSum -= RetValue; p->nSum -= RetValue;
p->iFirst = ( p->iFirst + 1 ) % p->nCap; p->iFirst = ( p->iFirst + 1 ) % p->nCap;
p->nSize--; p->nSize--;
...@@ -147,9 +144,9 @@ static inline int xSAT_BQueuePop( xSAT_BQueue_t * p ) ...@@ -147,9 +144,9 @@ static inline int xSAT_BQueuePop( xSAT_BQueue_t * p )
SeeAlso [] SeeAlso []
***********************************************************************/ ***********************************************************************/
static inline word xSAT_BQueueAvg( xSAT_BQueue_t * p ) static inline unsigned xSAT_BQueueAvg( xSAT_BQueue_t * p )
{ {
return ( word )( p->nSum / ( ( word ) p->nSize ) ); return ( unsigned )( p->nSum / ( ( word ) p->nSize ) );
} }
/**Function************************************************************* /**Function*************************************************************
......
...@@ -39,7 +39,7 @@ struct xSAT_Clause_t_ ...@@ -39,7 +39,7 @@ struct xSAT_Clause_t_
unsigned fReallocd : 1; unsigned fReallocd : 1;
unsigned fCanBeDel : 1; unsigned fCanBeDel : 1;
unsigned nLBD : 28; unsigned nLBD : 28;
unsigned nSize; int nSize;
union { union {
int Lit; int Lit;
unsigned Act; unsigned Act;
...@@ -60,7 +60,7 @@ struct xSAT_Clause_t_ ...@@ -60,7 +60,7 @@ struct xSAT_Clause_t_
SeeAlso [] SeeAlso []
***********************************************************************/ ***********************************************************************/
static int xSAT_ClauseCompare( const void * p1, const void * p2 ) static inline int xSAT_ClauseCompare( const void * p1, const void * p2 )
{ {
xSAT_Clause_t * pC1 = ( xSAT_Clause_t * ) p1; xSAT_Clause_t * pC1 = ( xSAT_Clause_t * ) p1;
xSAT_Clause_t * pC2 = ( xSAT_Clause_t * ) p2; xSAT_Clause_t * pC2 = ( xSAT_Clause_t * ) p2;
...@@ -91,12 +91,12 @@ static int xSAT_ClauseCompare( const void * p1, const void * p2 ) ...@@ -91,12 +91,12 @@ static int xSAT_ClauseCompare( const void * p1, const void * p2 )
SeeAlso [] SeeAlso []
***********************************************************************/ ***********************************************************************/
static void xSAT_ClausePrint( xSAT_Clause_t * pCla ) static inline void xSAT_ClausePrint( xSAT_Clause_t * pCla )
{ {
int i; int i;
printf("{ "); printf("{ ");
for ( i = 0; i < (int)pCla->nSize; i++ ) for ( i = 0; i < pCla->nSize; i++ )
printf("%d ", pCla->pData[i].Lit ); printf("%d ", pCla->pData[i].Lit );
printf("}\n"); printf("}\n");
} }
......
...@@ -48,7 +48,7 @@ struct xSAT_Heap_t_ ...@@ -48,7 +48,7 @@ struct xSAT_Heap_t_
SeeAlso [] SeeAlso []
***********************************************************************/ ***********************************************************************/
static inline int xSAT_HeapSize( xSAT_Heap_t * h ) inline int xSAT_HeapSize( xSAT_Heap_t * h )
{ {
return Vec_IntSize( h->vHeap ); return Vec_IntSize( h->vHeap );
} }
...@@ -64,7 +64,7 @@ static inline int xSAT_HeapSize( xSAT_Heap_t * h ) ...@@ -64,7 +64,7 @@ static inline int xSAT_HeapSize( xSAT_Heap_t * h )
SeeAlso [] SeeAlso []
***********************************************************************/ ***********************************************************************/
static inline int xSAT_HeapInHeap( xSAT_Heap_t * h, int Var ) inline int xSAT_HeapInHeap( xSAT_Heap_t * h, int Var )
{ {
return ( Var < Vec_IntSize( h->vIndices ) ) && ( Vec_IntEntry( h->vIndices, Var ) >= 0 ); return ( Var < Vec_IntSize( h->vIndices ) ) && ( Vec_IntEntry( h->vIndices, Var ) >= 0 );
} }
......
...@@ -77,16 +77,14 @@ static inline void xSAT_MemGrow( xSAT_Mem_t * p, unsigned nCap ) ...@@ -77,16 +77,14 @@ static inline void xSAT_MemGrow( xSAT_Mem_t * p, unsigned nCap )
unsigned nPrevCap = p->nCap; unsigned nPrevCap = p->nCap;
if ( p->nCap >= nCap ) if ( p->nCap >= nCap )
return; return;
while (p->nCap < nCap) while (p->nCap < nCap)
{ {
unsigned delta = ((p->nCap >> 1) + (p->nCap >> 3) + 2) & ~1; unsigned delta = ( ( p->nCap >> 1 ) + ( p->nCap >> 3 ) + 2 ) & ~1;
p->nCap += delta; p->nCap += delta;
assert(p->nCap >= nPrevCap); assert(p->nCap >= nPrevCap);
} }
assert(p->nCap > 0); assert(p->nCap > 0);
p->pData = ABC_REALLOC(unsigned, p->pData, p->nCap); p->pData = ABC_REALLOC( unsigned, p->pData, p->nCap );
} }
/**Function************************************************************* /**Function*************************************************************
...@@ -160,12 +158,10 @@ static inline unsigned xSAT_MemAppend( xSAT_Mem_t * p, int nSize ) ...@@ -160,12 +158,10 @@ static inline unsigned xSAT_MemAppend( xSAT_Mem_t * p, int nSize )
{ {
unsigned nPrevSize; unsigned nPrevSize;
assert(nSize > 0); assert(nSize > 0);
xSAT_MemGrow(p, p->nSize + nSize); xSAT_MemGrow( p, p->nSize + nSize );
nPrevSize = p->nSize; nPrevSize = p->nSize;
p->nSize += nSize; p->nSize += nSize;
assert(p->nSize > nPrevSize); assert(p->nSize > nPrevSize);
return nPrevSize; return nPrevSize;
} }
......
...@@ -46,7 +46,7 @@ ABC_NAMESPACE_IMPL_START ...@@ -46,7 +46,7 @@ ABC_NAMESPACE_IMPL_START
SeeAlso [] SeeAlso []
***********************************************************************/ ***********************************************************************/
static inline int xSAT_SolverDecide( xSAT_Solver_t* s ) static inline int xSAT_SolverDecide( xSAT_Solver_t * s )
{ {
int NextVar = VarUndef; int NextVar = VarUndef;
...@@ -74,7 +74,7 @@ static inline int xSAT_SolverDecide( xSAT_Solver_t* s ) ...@@ -74,7 +74,7 @@ static inline int xSAT_SolverDecide( xSAT_Solver_t* s )
SeeAlso [] SeeAlso []
***********************************************************************/ ***********************************************************************/
void xSAT_SolverRebuildOrderHeap( xSAT_Solver_t* s ) void xSAT_SolverRebuildOrderHeap( xSAT_Solver_t * s )
{ {
Vec_Int_t * vTemp = Vec_IntAlloc( Vec_StrSize( s->vAssigns ) ); Vec_Int_t * vTemp = Vec_IntAlloc( Vec_StrSize( s->vAssigns ) );
int Var; int Var;
...@@ -100,14 +100,14 @@ void xSAT_SolverRebuildOrderHeap( xSAT_Solver_t* s ) ...@@ -100,14 +100,14 @@ void xSAT_SolverRebuildOrderHeap( xSAT_Solver_t* s )
***********************************************************************/ ***********************************************************************/
static inline void xSAT_SolverVarActRescale( xSAT_Solver_t * s ) static inline void xSAT_SolverVarActRescale( xSAT_Solver_t * s )
{ {
unsigned * pActivity = (unsigned *) Vec_IntArray( s->vActivity );
int i; int i;
unsigned * pActivity = ( unsigned * ) Vec_IntArray( s->vActivity );
for ( i = 0; i < Vec_IntSize( s->vActivity ); i++ ) for ( i = 0; i < Vec_IntSize( s->vActivity ); i++ )
pActivity[i] >>= 19; pActivity[i] >>= 19;
s->nVarActInc >>= 19; s->nVarActInc >>= 19;
s->nVarActInc = Abc_MaxInt( s->nVarActInc, (1 << 5) ); s->nVarActInc = Abc_MaxInt( s->nVarActInc, ( 1 << 5 ) );
} }
/**Function************************************************************* /**Function*************************************************************
...@@ -121,9 +121,9 @@ static inline void xSAT_SolverVarActRescale( xSAT_Solver_t * s ) ...@@ -121,9 +121,9 @@ static inline void xSAT_SolverVarActRescale( xSAT_Solver_t * s )
SeeAlso [] SeeAlso []
***********************************************************************/ ***********************************************************************/
static inline void xSAT_SolverVarActBump( xSAT_Solver_t* s, int Var ) static inline void xSAT_SolverVarActBump( xSAT_Solver_t * s, int Var )
{ {
unsigned * pActivity = (unsigned *) Vec_IntArray( s->vActivity ); unsigned * pActivity = ( unsigned * ) Vec_IntArray( s->vActivity );
pActivity[Var] += s->nVarActInc; pActivity[Var] += s->nVarActInc;
if ( pActivity[Var] & 0x80000000 ) if ( pActivity[Var] & 0x80000000 )
...@@ -167,7 +167,7 @@ static inline void xSAT_SolverClaActRescale( xSAT_Solver_t * s ) ...@@ -167,7 +167,7 @@ static inline void xSAT_SolverClaActRescale( xSAT_Solver_t * s )
Vec_IntForEachEntry( s->vLearnts, CRef, i ) Vec_IntForEachEntry( s->vLearnts, CRef, i )
{ {
pC = xSAT_SolverReadClause( s, (unsigned) CRef ); pC = xSAT_SolverReadClause( s, ( unsigned ) CRef );
pC->pData[pC->nSize].Act >>= 14; pC->pData[pC->nSize].Act >>= 14;
} }
s->nClaActInc >>= 14; s->nClaActInc >>= 14;
...@@ -221,16 +221,16 @@ static inline void xSAT_SolverClaActDecay( xSAT_Solver_t * s ) ...@@ -221,16 +221,16 @@ static inline void xSAT_SolverClaActDecay( xSAT_Solver_t * s )
***********************************************************************/ ***********************************************************************/
static inline int xSAT_SolverClaCalcLBD( xSAT_Solver_t * s, xSAT_Clause_t * pCla ) static inline int xSAT_SolverClaCalcLBD( xSAT_Solver_t * s, xSAT_Clause_t * pCla )
{ {
int nLBD = 0;
int i; int i;
int nLBD = 0;
s->nStamp++; s->nStamp++;
for ( i = 0; i < (int)pCla->nSize; i++ ) for ( i = 0; i < pCla->nSize; i++ )
{ {
int Level = Vec_IntEntry( s->vLevels, xSAT_Lit2Var( pCla->pData[i].Lit ) ); int Level = Vec_IntEntry( s->vLevels, xSAT_Lit2Var( pCla->pData[i].Lit ) );
if ( (unsigned) Vec_IntEntry( s->vStamp, Level ) != s->nStamp ) if ( ( unsigned ) Vec_IntEntry( s->vStamp, Level ) != s->nStamp )
{ {
Vec_IntWriteEntry( s->vStamp, Level, (int) s->nStamp ); Vec_IntWriteEntry( s->vStamp, Level, ( int ) s->nStamp );
nLBD++; nLBD++;
} }
} }
...@@ -239,16 +239,16 @@ static inline int xSAT_SolverClaCalcLBD( xSAT_Solver_t * s, xSAT_Clause_t * pCla ...@@ -239,16 +239,16 @@ static inline int xSAT_SolverClaCalcLBD( xSAT_Solver_t * s, xSAT_Clause_t * pCla
static inline int xSAT_SolverClaCalcLBD2( xSAT_Solver_t * s, Vec_Int_t * vLits ) static inline int xSAT_SolverClaCalcLBD2( xSAT_Solver_t * s, Vec_Int_t * vLits )
{ {
int nLBD = 0;
int i; int i;
int nLBD = 0;
s->nStamp++; s->nStamp++;
for ( i = 0; i < Vec_IntSize( vLits ); i++ ) for ( i = 0; i < Vec_IntSize( vLits ); i++ )
{ {
int Level = Vec_IntEntry( s->vLevels, xSAT_Lit2Var( Vec_IntEntry( vLits, i ) ) ); int Level = Vec_IntEntry( s->vLevels, xSAT_Lit2Var( Vec_IntEntry( vLits, i ) ) );
if ( (unsigned) Vec_IntEntry( s->vStamp, Level ) != s->nStamp ) if ( ( unsigned ) Vec_IntEntry( s->vStamp, Level ) != s->nStamp )
{ {
Vec_IntWriteEntry( s->vStamp, Level, (int) s->nStamp ); Vec_IntWriteEntry( s->vStamp, Level, ( int ) s->nStamp );
nLBD++; nLBD++;
} }
} }
...@@ -330,13 +330,13 @@ unsigned xSAT_SolverClaNew( xSAT_Solver_t * s, Vec_Int_t * vLits , int fLearnt ) ...@@ -330,13 +330,13 @@ unsigned xSAT_SolverClaNew( xSAT_Solver_t * s, Vec_Int_t * vLits , int fLearnt )
SeeAlso [] SeeAlso []
***********************************************************************/ ***********************************************************************/
int xSAT_SolverEnqueue( xSAT_Solver_t* s, int Lit, unsigned Reason ) int xSAT_SolverEnqueue( xSAT_Solver_t * s, int Lit, unsigned Reason )
{ {
int Var = xSAT_Lit2Var( Lit ); int Var = xSAT_Lit2Var( Lit );
Vec_StrWriteEntry( s->vAssigns, Var, (char)xSAT_LitSign( Lit ) ); Vec_StrWriteEntry( s->vAssigns, Var, xSAT_LitSign( Lit ) );
Vec_IntWriteEntry( s->vLevels, Var, xSAT_SolverDecisionLevel( s ) ); Vec_IntWriteEntry( s->vLevels, Var, xSAT_SolverDecisionLevel( s ) );
Vec_IntWriteEntry( s->vReasons, Var, (int) Reason ); Vec_IntWriteEntry( s->vReasons, Var, ( int ) Reason );
Vec_IntPush( s->vTrail, Lit ); Vec_IntPush( s->vTrail, Lit );
return true; return true;
...@@ -353,7 +353,7 @@ int xSAT_SolverEnqueue( xSAT_Solver_t* s, int Lit, unsigned Reason ) ...@@ -353,7 +353,7 @@ int xSAT_SolverEnqueue( xSAT_Solver_t* s, int Lit, unsigned Reason )
SeeAlso [] SeeAlso []
***********************************************************************/ ***********************************************************************/
static inline void xSAT_SolverNewDecision( xSAT_Solver_t* s, int Lit ) static inline void xSAT_SolverNewDecision( xSAT_Solver_t * s, int Lit )
{ {
assert( Vec_StrEntry( s->vAssigns, xSAT_Lit2Var( Lit ) ) == VarX ); assert( Vec_StrEntry( s->vAssigns, xSAT_Lit2Var( Lit ) ) == VarX );
s->Stats.nDecisions++; s->Stats.nDecisions++;
...@@ -375,6 +375,7 @@ static inline void xSAT_SolverNewDecision( xSAT_Solver_t* s, int Lit ) ...@@ -375,6 +375,7 @@ static inline void xSAT_SolverNewDecision( xSAT_Solver_t* s, int Lit )
void xSAT_SolverCancelUntil( xSAT_Solver_t * s, int Level ) void xSAT_SolverCancelUntil( xSAT_Solver_t * s, int Level )
{ {
int c; int c;
if ( xSAT_SolverDecisionLevel( s ) <= Level ) if ( xSAT_SolverDecisionLevel( s ) <= Level )
return; return;
...@@ -410,30 +411,30 @@ static int xSAT_SolverIsLitRemovable( xSAT_Solver_t* s, int Lit, int MinLevel ) ...@@ -410,30 +411,30 @@ static int xSAT_SolverIsLitRemovable( xSAT_Solver_t* s, int Lit, int MinLevel )
{ {
int top = Vec_IntSize( s->vTagged ); int top = Vec_IntSize( s->vTagged );
assert( (unsigned) Vec_IntEntry( s->vReasons, xSAT_Lit2Var( Lit ) ) != CRefUndef ); assert( ( unsigned ) Vec_IntEntry( s->vReasons, xSAT_Lit2Var( Lit ) ) != CRefUndef );
Vec_IntClear( s->vStack ); Vec_IntClear( s->vStack );
Vec_IntPush( s->vStack, xSAT_Lit2Var( Lit ) ); Vec_IntPush( s->vStack, xSAT_Lit2Var( Lit ) );
while ( Vec_IntSize( s->vStack ) ) while ( Vec_IntSize( s->vStack ) )
{ {
int i;
int v = Vec_IntPop( s->vStack ); int v = Vec_IntPop( s->vStack );
xSAT_Clause_t* c = xSAT_SolverReadClause(s, ( unsigned ) Vec_IntEntry( s->vReasons, v ) ); xSAT_Clause_t* c = xSAT_SolverReadClause(s, ( unsigned ) Vec_IntEntry( s->vReasons, v ) );
int* Lits = &( c->pData[0].Lit ); int * Lits = &( c->pData[0].Lit );
int i;
assert( (unsigned) Vec_IntEntry( s->vReasons, v ) != CRefUndef);
assert( (unsigned) Vec_IntEntry( s->vReasons, v ) != CRefUndef);
if( c->nSize == 2 && Vec_StrEntry( s->vAssigns, xSAT_Lit2Var( Lits[0] ) ) == xSAT_LitSign( xSAT_NegLit( Lits[0] ) ) ) if( c->nSize == 2 && Vec_StrEntry( s->vAssigns, xSAT_Lit2Var( Lits[0] ) ) == xSAT_LitSign( xSAT_NegLit( Lits[0] ) ) )
{ {
assert( Vec_StrEntry( s->vAssigns, xSAT_Lit2Var( Lits[1] ) ) == xSAT_LitSign( ( Lits[1] ) ) ); assert( Vec_StrEntry( s->vAssigns, xSAT_Lit2Var( Lits[1] ) ) == xSAT_LitSign( ( Lits[1] ) ) );
ABC_SWAP( int, Lits[0], Lits[1] ); ABC_SWAP( int, Lits[0], Lits[1] );
} }
for (i = 1; i < (int)c->nSize; i++) for ( i = 1; i < c->nSize; i++ )
{ {
int v = xSAT_Lit2Var( Lits[i] ); int v = xSAT_Lit2Var( Lits[i] );
if ( !Vec_StrEntry( s->vSeen, v ) && Vec_IntEntry( s->vLevels, v ) ) if ( !Vec_StrEntry( s->vSeen, v ) && Vec_IntEntry( s->vLevels, v ) )
{ {
if ( (unsigned) Vec_IntEntry( s->vReasons, v ) != CRefUndef && ((1 << (Vec_IntEntry( s->vLevels, v ) & 31)) & MinLevel)) if ( ( unsigned ) Vec_IntEntry( s->vReasons, v ) != CRefUndef && ( ( 1 << (Vec_IntEntry( s->vLevels, v ) & 31 ) ) & MinLevel ) )
{ {
Vec_IntPush( s->vStack, v ); Vec_IntPush( s->vStack, v );
Vec_IntPush( s->vTagged, Lits[i] ); Vec_IntPush( s->vTagged, Lits[i] );
...@@ -443,7 +444,7 @@ static int xSAT_SolverIsLitRemovable( xSAT_Solver_t* s, int Lit, int MinLevel ) ...@@ -443,7 +444,7 @@ static int xSAT_SolverIsLitRemovable( xSAT_Solver_t* s, int Lit, int MinLevel )
{ {
int Lit; int Lit;
Vec_IntForEachEntryStart( s->vTagged, Lit, i, top ) Vec_IntForEachEntryStart( s->vTagged, Lit, i, top )
Vec_StrWriteEntry( s->vSeen, xSAT_Lit2Var(Lit), 0 ); Vec_StrWriteEntry( s->vSeen, xSAT_Lit2Var( Lit ), 0 );
Vec_IntShrink( s->vTagged, top ); Vec_IntShrink( s->vTagged, top );
return 0; return 0;
} }
...@@ -479,40 +480,34 @@ static void xSAT_SolverClaMinimisation( xSAT_Solver_t * s, Vec_Int_t * vLits ) ...@@ -479,40 +480,34 @@ static void xSAT_SolverClaMinimisation( xSAT_Solver_t * s, Vec_Int_t * vLits )
/* Remove reduntant literals */ /* Remove reduntant literals */
Vec_IntAppend( s->vTagged, vLits ); Vec_IntAppend( s->vTagged, vLits );
for ( i = j = 1; i < Vec_IntSize( vLits ); i++ ) for ( i = j = 1; i < Vec_IntSize( vLits ); i++ )
if ( (unsigned) Vec_IntEntry( s->vReasons, xSAT_Lit2Var( pLits[i] ) ) == CRefUndef || !xSAT_SolverIsLitRemovable( s, pLits[i], MinLevel ) ) if ( ( unsigned ) Vec_IntEntry( s->vReasons, xSAT_Lit2Var( pLits[i] ) ) == CRefUndef || !xSAT_SolverIsLitRemovable( s, pLits[i], MinLevel ) )
pLits[j++] = pLits[i]; pLits[j++] = pLits[i];
Vec_IntShrink( vLits, j ); Vec_IntShrink( vLits, j );
/* Binary Resolution */ /* Binary Resolution */
if( Vec_IntSize( vLits ) <= 30 && xSAT_SolverClaCalcLBD2( s, vLits ) <= 6 ) if( Vec_IntSize( vLits ) <= 30 && xSAT_SolverClaCalcLBD2( s, vLits ) <= 6 )
{ {
int nb, l;
int Lit; int Lit;
int FlaseLit = xSAT_NegLit( pLits[0] ); int FlaseLit = xSAT_NegLit( pLits[0] );
int nb; xSAT_WatchList_t * ws = xSAT_VecWatchListEntry( s->vBinWatches, FlaseLit );
int l; xSAT_Watcher_t * begin = xSAT_WatchListArray( ws );
xSAT_Watcher_t * end = begin + xSAT_WatchListSize( ws );
xSAT_WatchList_t * ws;
xSAT_Watcher_t * begin;
xSAT_Watcher_t * end;
xSAT_Watcher_t * pWatcher; xSAT_Watcher_t * pWatcher;
s->nStamp++; s->nStamp++;
Vec_IntForEachEntry( vLits, Lit, i ) Vec_IntForEachEntry( vLits, Lit, i )
Vec_IntWriteEntry( s->vStamp, xSAT_Lit2Var( Lit ), s->nStamp ); Vec_IntWriteEntry( s->vStamp, xSAT_Lit2Var( Lit ), ( int ) s->nStamp );
ws = xSAT_VecWatchListEntry( s->vBinWatches, FlaseLit );
begin = xSAT_WatchListArray( ws );
end = begin + xSAT_WatchListSize( ws );
nb = 0; nb = 0;
for ( pWatcher = begin; pWatcher < end; pWatcher++ ) for ( pWatcher = begin; pWatcher < end; pWatcher++ )
{ {
int ImpLit = pWatcher->Blocker; int ImpLit = pWatcher->Blocker;
if ( Vec_IntEntry( s->vStamp, xSAT_Lit2Var( ImpLit ) ) == (int)s->nStamp && Vec_StrEntry( s->vAssigns, xSAT_Lit2Var( ImpLit ) ) == xSAT_LitSign( ImpLit ) ) if ( ( unsigned ) Vec_IntEntry( s->vStamp, xSAT_Lit2Var( ImpLit ) ) == s->nStamp && Vec_StrEntry( s->vAssigns, xSAT_Lit2Var( ImpLit ) ) == xSAT_LitSign( ImpLit ) )
{ {
nb++; nb++;
Vec_IntWriteEntry( s->vStamp, xSAT_Lit2Var( ImpLit ), s->nStamp - 1 ); Vec_IntWriteEntry( s->vStamp, xSAT_Lit2Var( ImpLit ), ( int )( s->nStamp - 1 ) );
} }
} }
...@@ -520,7 +515,7 @@ static void xSAT_SolverClaMinimisation( xSAT_Solver_t * s, Vec_Int_t * vLits ) ...@@ -520,7 +515,7 @@ static void xSAT_SolverClaMinimisation( xSAT_Solver_t * s, Vec_Int_t * vLits )
if ( nb > 0 ) if ( nb > 0 )
{ {
for ( i = 1; i < Vec_IntSize( vLits ) - nb; i++ ) for ( i = 1; i < Vec_IntSize( vLits ) - nb; i++ )
if ( Vec_IntEntry( s->vStamp, xSAT_Lit2Var( pLits[i] ) ) != (int)s->nStamp ) if ( ( unsigned ) Vec_IntEntry( s->vStamp, xSAT_Lit2Var( pLits[i] ) ) != s->nStamp )
{ {
int TempLit = pLits[l]; int TempLit = pLits[l];
pLits[l] = pLits[i]; pLits[l] = pLits[i];
...@@ -546,43 +541,44 @@ static void xSAT_SolverClaMinimisation( xSAT_Solver_t * s, Vec_Int_t * vLits ) ...@@ -546,43 +541,44 @@ static void xSAT_SolverClaMinimisation( xSAT_Solver_t * s, Vec_Int_t * vLits )
***********************************************************************/ ***********************************************************************/
static void xSAT_SolverAnalyze( xSAT_Solver_t* s, unsigned ConfCRef, Vec_Int_t * vLearnt, int * OutBtLevel, unsigned * nLBD ) static void xSAT_SolverAnalyze( xSAT_Solver_t* s, unsigned ConfCRef, Vec_Int_t * vLearnt, int * OutBtLevel, unsigned * nLBD )
{ {
int* trail = Vec_IntArray( s->vTrail ); int * trail = Vec_IntArray( s->vTrail );
int Count = 0; int Count = 0;
int p = LitUndef; int p = LitUndef;
int Idx = Vec_IntSize( s->vTrail ) - 1; int Idx = Vec_IntSize( s->vTrail ) - 1;
int* Lits; int * Lits;
int Lit; int Lit;
int i, j; int i, j;
Vec_IntPush( vLearnt, LitUndef ); Vec_IntPush( vLearnt, LitUndef );
do do
{ {
xSAT_Clause_t * c; xSAT_Clause_t * pCla;
assert( ConfCRef != CRefUndef ); assert( ConfCRef != CRefUndef );
c = xSAT_SolverReadClause(s, ConfCRef); pCla = xSAT_SolverReadClause(s, ConfCRef);
Lits = &( c->pData[0].Lit ); Lits = &( pCla->pData[0].Lit );
if( p != LitUndef && c->nSize == 2 && Vec_StrEntry( s->vAssigns, xSAT_Lit2Var(Lits[0])) == xSAT_LitSign( xSAT_NegLit( Lits[0] ) ) ) if( p != LitUndef && pCla->nSize == 2 && Vec_StrEntry( s->vAssigns, xSAT_Lit2Var( Lits[0] ) ) == xSAT_LitSign( xSAT_NegLit( Lits[0] ) ) )
{ {
assert( Vec_StrEntry( s->vAssigns, xSAT_Lit2Var( Lits[1] ) ) == xSAT_LitSign( ( Lits[1] ) ) ); assert( Vec_StrEntry( s->vAssigns, xSAT_Lit2Var( Lits[1] ) ) == xSAT_LitSign( ( Lits[1] ) ) );
ABC_SWAP( int, Lits[0], Lits[1] ); ABC_SWAP( int, Lits[0], Lits[1] );
} }
if ( c->fLearnt ) if ( pCla->fLearnt )
xSAT_SolverClaActBump( s, c ); xSAT_SolverClaActBump( s, pCla );
if ( c->fLearnt && c->nLBD > 2 ) if ( pCla->fLearnt && pCla->nLBD > 2 )
{ {
unsigned int nblevels = xSAT_SolverClaCalcLBD(s, c); unsigned int nLevels = xSAT_SolverClaCalcLBD( s, pCla );
if ( nblevels + 1 < c->nLBD ) if ( nLevels + 1 < pCla->nLBD )
{ {
if (c->nLBD <= s->Config.nLBDFrozenClause) if ( pCla->nLBD <= s->Config.nLBDFrozenClause )
c->fCanBeDel = 0; pCla->fCanBeDel = 0;
c->nLBD = nblevels; pCla->nLBD = nLevels;
} }
} }
for ( j = ( p == LitUndef ? 0 : 1 ); j < (int)c->nSize; j++ ) for ( j = ( p == LitUndef ? 0 : 1 ); j < pCla->nSize; j++ )
{ {
int Var = xSAT_Lit2Var( Lits[j] ); int Var = xSAT_Lit2Var( Lits[j] );
...@@ -605,14 +601,13 @@ static void xSAT_SolverAnalyze( xSAT_Solver_t* s, unsigned ConfCRef, Vec_Int_t * ...@@ -605,14 +601,13 @@ static void xSAT_SolverAnalyze( xSAT_Solver_t* s, unsigned ConfCRef, Vec_Int_t *
// Next clause to look at // Next clause to look at
p = trail[Idx+1]; p = trail[Idx+1];
ConfCRef = (unsigned) Vec_IntEntry( s->vReasons, xSAT_Lit2Var( p ) ); ConfCRef = ( unsigned ) Vec_IntEntry( s->vReasons, xSAT_Lit2Var( p ) );
Vec_StrWriteEntry( s->vSeen, xSAT_Lit2Var( p ), 0 ); Vec_StrWriteEntry( s->vSeen, xSAT_Lit2Var( p ), 0 );
Count--; Count--;
} while ( Count > 0 ); } while ( Count > 0 );
Vec_IntArray( vLearnt )[0] = xSAT_NegLit( p ); Vec_IntArray( vLearnt )[0] = xSAT_NegLit( p );
xSAT_SolverClaMinimisation( s, vLearnt ); xSAT_SolverClaMinimisation( s, vLearnt );
// Find the backtrack level // Find the backtrack level
...@@ -677,41 +672,38 @@ unsigned xSAT_SolverPropagate( xSAT_Solver_t* s ) ...@@ -677,41 +672,38 @@ unsigned xSAT_SolverPropagate( xSAT_Solver_t* s )
while ( s->iQhead < Vec_IntSize( s->vTrail ) ) while ( s->iQhead < Vec_IntSize( s->vTrail ) )
{ {
int p = Vec_IntEntry( s->vTrail, s->iQhead++ ); int p = Vec_IntEntry( s->vTrail, s->iQhead++ );
xSAT_WatchList_t* ws = xSAT_VecWatchListEntry( s->vBinWatches, p ); xSAT_WatchList_t* ws = xSAT_VecWatchListEntry( s->vBinWatches, p );
xSAT_Watcher_t* begin = xSAT_WatchListArray( ws ); xSAT_Watcher_t* begin = xSAT_WatchListArray( ws );
xSAT_Watcher_t* end = begin + xSAT_WatchListSize( ws ); xSAT_Watcher_t* end = begin + xSAT_WatchListSize( ws );
xSAT_Watcher_t *i, *j; xSAT_Watcher_t *i, *j;
nProp++; nProp++;
for (i = begin; i < end; i++) for ( i = begin; i < end; i++ )
{ {
if ( Vec_StrEntry( s->vAssigns, xSAT_Lit2Var(i->Blocker)) == xSAT_LitSign(xSAT_NegLit(i->Blocker))) if ( Vec_StrEntry( s->vAssigns, xSAT_Lit2Var( i->Blocker ) ) == xSAT_LitSign( xSAT_NegLit( i->Blocker ) ) )
{ {
return i->CRef; return i->CRef;
} }
else if ( Vec_StrEntry( s->vAssigns, xSAT_Lit2Var(i->Blocker)) == VarX) else if ( Vec_StrEntry( s->vAssigns, xSAT_Lit2Var( i->Blocker ) ) == VarX )
xSAT_SolverEnqueue(s, i->Blocker, i->CRef); xSAT_SolverEnqueue( s, i->Blocker, i->CRef );
} }
ws = xSAT_VecWatchListEntry( s->vWatches, p );
ws = xSAT_VecWatchListEntry( s->vWatches, p);
begin = xSAT_WatchListArray( ws ); begin = xSAT_WatchListArray( ws );
end = begin + xSAT_WatchListSize( ws ); end = begin + xSAT_WatchListSize( ws );
for ( i = j = begin; i < end; ) for ( i = j = begin; i < end; )
{ {
xSAT_Clause_t* c; xSAT_Clause_t * pCla;
xSAT_Watcher_t w; xSAT_Watcher_t w;
if ( Vec_StrEntry( s->vAssigns, xSAT_Lit2Var( i->Blocker ) ) == xSAT_LitSign( i->Blocker ) ) if ( Vec_StrEntry( s->vAssigns, xSAT_Lit2Var( i->Blocker ) ) == xSAT_LitSign( i->Blocker ) )
{ {
*j++ = *i++; *j++ = *i++;
continue; continue;
} }
c = xSAT_SolverReadClause( s, i->CRef ); pCla = xSAT_SolverReadClause( s, i->CRef );
Lits = &( c->pData[0].Lit ); Lits = &( pCla->pData[0].Lit );
// Make sure the false literal is data[1]: // Make sure the false literal is data[1]:
NegLit = xSAT_NegLit( p ); NegLit = xSAT_NegLit( p );
...@@ -731,8 +723,8 @@ unsigned xSAT_SolverPropagate( xSAT_Solver_t* s ) ...@@ -731,8 +723,8 @@ unsigned xSAT_SolverPropagate( xSAT_Solver_t* s )
else else
{ {
// Look for new watch: // Look for new watch:
int* stop = Lits + c->nSize; int * stop = Lits + pCla->nSize;
int* k; int * k;
for ( k = Lits + 2; k < stop; k++ ) for ( k = Lits + 2; k < stop; k++ )
{ {
if (Vec_StrEntry( s->vAssigns, xSAT_Lit2Var( *k ) ) != !xSAT_LitSign( *k ) ) if (Vec_StrEntry( s->vAssigns, xSAT_Lit2Var( *k ) ) != !xSAT_LitSign( *k ) )
...@@ -791,7 +783,7 @@ void xSAT_SolverReduceDB( xSAT_Solver_t * s ) ...@@ -791,7 +783,7 @@ void xSAT_SolverReduceDB( xSAT_Solver_t * s )
int nLearnedOld = Vec_IntSize( s->vLearnts ); int nLearnedOld = Vec_IntSize( s->vLearnts );
int i, limit; int i, limit;
unsigned CRef; unsigned CRef;
xSAT_Clause_t * c; xSAT_Clause_t * pCla;
xSAT_Clause_t ** learnts_cls; xSAT_Clause_t ** learnts_cls;
learnts_cls = ABC_ALLOC( xSAT_Clause_t *, nLearnedOld ); learnts_cls = ABC_ALLOC( xSAT_Clause_t *, nLearnedOld );
...@@ -812,21 +804,22 @@ void xSAT_SolverReduceDB( xSAT_Solver_t * s ) ...@@ -812,21 +804,22 @@ void xSAT_SolverReduceDB( xSAT_Solver_t * s )
for ( i = 0; i < nLearnedOld; i++ ) for ( i = 0; i < nLearnedOld; i++ )
{ {
unsigned CRef; unsigned CRef;
c = learnts_cls[i];
CRef = xSAT_MemCRef( s->pMemory, (unsigned * ) c ); pCla = learnts_cls[i];
assert(c->fMark == 0); CRef = xSAT_MemCRef( s->pMemory, ( unsigned * ) pCla );
if ( c->fCanBeDel && c->nLBD > 2 && c->nSize > 2 && (unsigned) Vec_IntEntry( s->vReasons, xSAT_Lit2Var( c->pData[0].Lit ) ) != CRef && ( i < limit ) ) assert( pCla->fMark == 0 );
if ( pCla->fCanBeDel && pCla->nLBD > 2 && pCla->nSize > 2 && (unsigned) Vec_IntEntry( s->vReasons, xSAT_Lit2Var( pCla->pData[0].Lit ) ) != CRef && ( i < limit ) )
{ {
c->fMark = 1; pCla->fMark = 1;
s->Stats.nLearntLits -= c->nSize; s->Stats.nLearntLits -= pCla->nSize;
xSAT_WatchListRemove( xSAT_VecWatchListEntry( s->vWatches, xSAT_NegLit( c->pData[0].Lit ) ), CRef ); xSAT_WatchListRemove( xSAT_VecWatchListEntry( s->vWatches, xSAT_NegLit( pCla->pData[0].Lit ) ), CRef );
xSAT_WatchListRemove( xSAT_VecWatchListEntry( s->vWatches, xSAT_NegLit( c->pData[1].Lit ) ), CRef ); xSAT_WatchListRemove( xSAT_VecWatchListEntry( s->vWatches, xSAT_NegLit( pCla->pData[1].Lit ) ), CRef );
} }
else else
{ {
if (!c->fCanBeDel) if ( !pCla->fCanBeDel )
limit++; limit++;
c->fCanBeDel = 1; pCla->fCanBeDel = 1;
Vec_IntPush( s->vLearnts, CRef ); Vec_IntPush( s->vLearnts, CRef );
} }
} }
...@@ -876,7 +869,7 @@ char xSAT_SolverSearch( xSAT_Solver_t * s ) ...@@ -876,7 +869,7 @@ char xSAT_SolverSearch( xSAT_Solver_t * s )
return LBoolFalse; return LBoolFalse;
xSAT_BQueuePush( s->bqTrail, Vec_IntSize( s->vTrail ) ); xSAT_BQueuePush( s->bqTrail, Vec_IntSize( s->vTrail ) );
if ( s->Stats.nConflicts > s->Config.nFirstBlockRestart && xSAT_BQueueIsValid( s->bqLBD ) && ( Vec_IntSize( s->vTrail ) > ( s->Config.R * (iword)xSAT_BQueueAvg( s->bqTrail ) ) ) ) if ( s->Stats.nConflicts > s->Config.nFirstBlockRestart && xSAT_BQueueIsValid( s->bqLBD ) && ( Vec_IntSize( s->vTrail ) > ( s->Config.R * ( iword ) xSAT_BQueueAvg( s->bqTrail ) ) ) )
xSAT_BQueueClean(s->bqLBD); xSAT_BQueueClean(s->bqLBD);
Vec_IntClear( s->vLearntClause ); Vec_IntClear( s->vLearntClause );
...@@ -896,7 +889,7 @@ char xSAT_SolverSearch( xSAT_Solver_t * s ) ...@@ -896,7 +889,7 @@ char xSAT_SolverSearch( xSAT_Solver_t * s )
{ {
/* No conflict */ /* No conflict */
int NextVar; int NextVar;
if ( xSAT_BQueueIsValid( s->bqLBD ) && ( ( (iword)xSAT_BQueueAvg( s->bqLBD ) * s->Config.K ) > ( s->nSumLBD / (iword)s->Stats.nConflicts ) ) ) if ( xSAT_BQueueIsValid( s->bqLBD ) && ( ( ( iword )xSAT_BQueueAvg( s->bqLBD ) * s->Config.K ) > ( s->nSumLBD / s->Stats.nConflicts ) ) )
{ {
xSAT_BQueueClean( s->bqLBD ); xSAT_BQueueClean( s->bqLBD );
xSAT_SolverCancelUntil( s, 0 ); xSAT_SolverCancelUntil( s, 0 );
...@@ -942,23 +935,20 @@ char xSAT_SolverSearch( xSAT_Solver_t * s ) ...@@ -942,23 +935,20 @@ char xSAT_SolverSearch( xSAT_Solver_t * s )
***********************************************************************/ ***********************************************************************/
void xSAT_SolverClaRealloc( xSAT_Mem_t * pDest, xSAT_Mem_t * pSrc, unsigned * pCRef ) void xSAT_SolverClaRealloc( xSAT_Mem_t * pDest, xSAT_Mem_t * pSrc, unsigned * pCRef )
{ {
xSAT_Clause_t * pOldCla = xSAT_MemClauseHand( pSrc, *pCRef );
unsigned nNewCRef; unsigned nNewCRef;
xSAT_Clause_t * pNewCla; xSAT_Clause_t * pNewCla;
xSAT_Clause_t * pOldCla = xSAT_MemClauseHand( pSrc, *pCRef );
if ( pOldCla->fReallocd ) if ( pOldCla->fReallocd )
{ {
*pCRef = (unsigned) pOldCla->nSize; *pCRef = ( unsigned ) pOldCla->nSize;
return; return;
} }
nNewCRef = xSAT_MemAppend( pDest, 3 + pOldCla->fLearnt + pOldCla->nSize ); nNewCRef = xSAT_MemAppend( pDest, 3 + pOldCla->fLearnt + pOldCla->nSize );
pNewCla = xSAT_MemClauseHand( pDest, nNewCRef ); pNewCla = xSAT_MemClauseHand( pDest, nNewCRef );
memcpy( pNewCla, pOldCla, ( 3 + pOldCla->fLearnt + pOldCla->nSize ) * 4 ); memcpy( pNewCla, pOldCla, ( 3 + pOldCla->fLearnt + pOldCla->nSize ) * 4 );
pOldCla->fReallocd = 1; pOldCla->fReallocd = 1;
pOldCla->nSize = (unsigned) nNewCRef; pOldCla->nSize = ( unsigned ) nNewCRef;
*pCRef = nNewCRef; *pCRef = nNewCRef;
} }
...@@ -997,14 +987,14 @@ void xSAT_SolverGarbageCollect( xSAT_Solver_t * s ) ...@@ -997,14 +987,14 @@ void xSAT_SolverGarbageCollect( xSAT_Solver_t * s )
} }
for ( i = 0; i < Vec_IntSize( s->vTrail ); i++ ) for ( i = 0; i < Vec_IntSize( s->vTrail ); i++ )
if ( (unsigned) Vec_IntEntry( s->vReasons, xSAT_Lit2Var( Vec_IntEntry( s->vTrail, i ) ) ) != CRefUndef ) if ( ( unsigned ) Vec_IntEntry( s->vReasons, xSAT_Lit2Var( Vec_IntEntry( s->vTrail, i ) ) ) != CRefUndef )
xSAT_SolverClaRealloc( pNewMemMngr, s->pMemory, (unsigned *)&( Vec_IntArray( s->vReasons )[xSAT_Lit2Var( Vec_IntEntry( s->vTrail, i ) )] ) ); xSAT_SolverClaRealloc( pNewMemMngr, s->pMemory, ( unsigned * ) &( Vec_IntArray( s->vReasons )[xSAT_Lit2Var( Vec_IntEntry( s->vTrail, i ) )] ) );
pArray = ( unsigned * ) Vec_IntArray( s->vLearnts ); pArray = ( unsigned * ) Vec_IntArray( s->vLearnts );
for ( i = 0; i < Vec_IntSize( s->vLearnts ); i++ ) for ( i = 0; i < Vec_IntSize( s->vLearnts ); i++ )
xSAT_SolverClaRealloc( pNewMemMngr, s->pMemory, &(pArray[i]) ); xSAT_SolverClaRealloc( pNewMemMngr, s->pMemory, &(pArray[i]) );
pArray = (unsigned *) Vec_IntArray( s->vClauses ); pArray = ( unsigned * ) Vec_IntArray( s->vClauses );
for ( i = 0; i < Vec_IntSize( s->vClauses ); i++ ) for ( i = 0; i < Vec_IntSize( s->vClauses ); i++ )
xSAT_SolverClaRealloc( pNewMemMngr, s->pMemory, &(pArray[i]) ); xSAT_SolverClaRealloc( pNewMemMngr, s->pMemory, &(pArray[i]) );
......
...@@ -81,9 +81,9 @@ struct xSAT_SolverOptions_t_ ...@@ -81,9 +81,9 @@ struct xSAT_SolverOptions_t_
char fVerbose; char fVerbose;
// Limits // Limits
word nConfLimit; // external limit on the number of conflicts iword nConfLimit; // external limit on the number of conflicts
word nInsLimit; // external limit on the number of implications iword nInsLimit; // external limit on the number of implications
abctime nRuntimeLimit; // external limit on runtime abctime nRuntimeLimit; // external limit on runtime
// Constants used for restart heuristic // Constants used for restart heuristic
double K; // Forces a restart double K; // Forces a restart
...@@ -105,13 +105,13 @@ struct xSAT_Stats_t_ ...@@ -105,13 +105,13 @@ struct xSAT_Stats_t_
unsigned nStarts; unsigned nStarts;
unsigned nReduceDB; unsigned nReduceDB;
word nDecisions; iword nDecisions;
word nPropagations; iword nPropagations;
word nInspects; iword nInspects;
word nConflicts; iword nConflicts;
word nClauseLits; iword nClauseLits;
word nLearntLits; iword nLearntLits;
}; };
struct xSAT_Solver_t_ struct xSAT_Solver_t_
...@@ -143,7 +143,7 @@ struct xSAT_Solver_t_ ...@@ -143,7 +143,7 @@ struct xSAT_Solver_t_
int nAssignSimplify; /* Number of top-level assignments since last int nAssignSimplify; /* Number of top-level assignments since last
* execution of 'simplify()'. */ * execution of 'simplify()'. */
word nPropSimplify; /* Remaining number of propagations that must be int64_t nPropSimplify; /* Remaining number of propagations that must be
* made before next execution of 'simplify()'. */ * made before next execution of 'simplify()'. */
/* Temporary data used by Search method */ /* Temporary data used by Search method */
...@@ -203,10 +203,10 @@ static inline xSAT_Clause_t * xSAT_SolverReadClause( xSAT_Solver_t * s, unsigned ...@@ -203,10 +203,10 @@ static inline xSAT_Clause_t * xSAT_SolverReadClause( xSAT_Solver_t * s, unsigned
static inline int xSAT_SolverIsClauseSatisfied( xSAT_Solver_t * s, xSAT_Clause_t * pCla ) static inline int xSAT_SolverIsClauseSatisfied( xSAT_Solver_t * s, xSAT_Clause_t * pCla )
{ {
int i; int i;
int * lits = &( pCla->pData[0].Lit ); int * Lits = &( pCla->pData[0].Lit );
for ( i = 0; i < (int)pCla->nSize; i++ ) for ( i = 0; i < pCla->nSize; i++ )
if ( Vec_StrEntry( s->vAssigns, xSAT_Lit2Var( lits[i] ) ) == xSAT_LitSign( ( lits[i] ) ) ) if ( Vec_StrEntry( s->vAssigns, xSAT_Lit2Var( Lits[i] ) ) == xSAT_LitSign( ( Lits[i] ) ) )
return true; return true;
return false; return false;
......
...@@ -51,6 +51,7 @@ xSAT_SolverOptions_t DefaultConfig = ...@@ -51,6 +51,7 @@ xSAT_SolverOptions_t DefaultConfig =
30 //.nLBDFrozenClause = 30 30 //.nLBDFrozenClause = 30
}; };
/**Function************************************************************* /**Function*************************************************************
Synopsis [] Synopsis []
...@@ -125,7 +126,6 @@ void xSAT_SolverDestroy( xSAT_Solver_t * s ) ...@@ -125,7 +126,6 @@ void xSAT_SolverDestroy( xSAT_Solver_t * s )
xSAT_VecWatchListFree( s->vWatches ); xSAT_VecWatchListFree( s->vWatches );
xSAT_VecWatchListFree( s->vBinWatches ); xSAT_VecWatchListFree( s->vBinWatches );
// delete vectors
xSAT_HeapFree(s->hOrder); xSAT_HeapFree(s->hOrder);
Vec_IntFree( s->vTrailLim ); Vec_IntFree( s->vTrailLim );
Vec_IntFree( s->vTrail ); Vec_IntFree( s->vTrail );
......
...@@ -118,9 +118,9 @@ static inline void xSAT_WatchListShrink( xSAT_WatchList_t * v, int k ) ...@@ -118,9 +118,9 @@ static inline void xSAT_WatchListShrink( xSAT_WatchList_t * v, int k )
static inline void xSAT_WatchListPush( xSAT_WatchList_t * v, xSAT_Watcher_t e ) static inline void xSAT_WatchListPush( xSAT_WatchList_t * v, xSAT_Watcher_t e )
{ {
assert( v ); assert( v );
if (v->nSize == v->nCap) if ( v->nSize == v->nCap )
{ {
int newsize = (v->nCap < 4) ? 4 : (v->nCap / 2) * 3; int newsize = ( v->nCap < 4 ) ? 4 : ( v->nCap / 2 ) * 3;
v->pArray = ABC_REALLOC( xSAT_Watcher_t, v->pArray, newsize ); v->pArray = ABC_REALLOC( xSAT_Watcher_t, v->pArray, newsize );
if ( v->pArray == NULL ) if ( v->pArray == NULL )
...@@ -167,9 +167,9 @@ static inline void xSAT_WatchListRemove( xSAT_WatchList_t * v, unsigned CRef ) ...@@ -167,9 +167,9 @@ static inline void xSAT_WatchListRemove( xSAT_WatchList_t * v, unsigned CRef )
xSAT_Watcher_t* ws = xSAT_WatchListArray(v); xSAT_Watcher_t* ws = xSAT_WatchListArray(v);
int j = 0; int j = 0;
for (; ws[j].CRef != CRef; j++); for ( ; ws[j].CRef != CRef; j++ );
assert(j < xSAT_WatchListSize(v)); assert( j < xSAT_WatchListSize( v ) );
memmove(v->pArray + j, v->pArray + j + 1, (v->nSize - j - 1) * sizeof(xSAT_Watcher_t)); memmove( v->pArray + j, v->pArray + j + 1, ( v->nSize - j - 1 ) * sizeof( xSAT_Watcher_t ) );
v->nSize -= 1; v->nSize -= 1;
} }
...@@ -190,7 +190,7 @@ static inline xSAT_VecWatchList_t * xSAT_VecWatchListAlloc( int nCap ) ...@@ -190,7 +190,7 @@ static inline xSAT_VecWatchList_t * xSAT_VecWatchListAlloc( int nCap )
v->nCap = 4; v->nCap = 4;
v->nSize = 0; v->nSize = 0;
v->pArray = (xSAT_WatchList_t *) ABC_CALLOC(xSAT_WatchList_t, sizeof( xSAT_WatchList_t ) * v->nCap); v->pArray = ( xSAT_WatchList_t * ) ABC_CALLOC(xSAT_WatchList_t, sizeof( xSAT_WatchList_t ) * v->nCap);
return v; return v;
} }
...@@ -233,7 +233,7 @@ static inline void xSAT_VecWatchListPush( xSAT_VecWatchList_t* v ) ...@@ -233,7 +233,7 @@ static inline void xSAT_VecWatchListPush( xSAT_VecWatchList_t* v )
int newsize = (v->nCap < 4) ? v->nCap * 2 : (v->nCap / 2) * 3; int newsize = (v->nCap < 4) ? v->nCap * 2 : (v->nCap / 2) * 3;
v->pArray = ABC_REALLOC( xSAT_WatchList_t, v->pArray, newsize ); v->pArray = ABC_REALLOC( xSAT_WatchList_t, v->pArray, newsize );
memset( v->pArray + v->nCap, 0, sizeof(xSAT_WatchList_t) * (newsize - v->nCap) ); memset( v->pArray + v->nCap, 0, sizeof( xSAT_WatchList_t ) * ( newsize - v->nCap ) );
if ( v->pArray == NULL ) if ( v->pArray == NULL )
{ {
printf( "Failed to realloc memory from %.1f MB to %.1f MB.\n", printf( "Failed to realloc memory from %.1f MB to %.1f MB.\n",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment