69#define Msat_OrderVarIsInBoundary( p, i ) ((p)->pVars[i].pNext)
70#define Msat_OrderVarIsAssigned( p, i ) ((p)->pSat->pAssigns[i] != MSAT_VAR_UNASSIGNED)
71#define Msat_OrderVarIsUsedInCone( p, i ) ((p)->pSat->vVarsUsed->pArray[i])
74#define Msat_OrderRingForEachEntry( pRing, pVar, pNext ) \
76 pNext = pVar? pVar->pNext : NULL; \
78 pVar = (pNext != pRing)? pNext : NULL, \
79 pNext = pVar? pVar->pNext : NULL )
127 if (
p->nVarsAlloc < nVarsMax )
130 for ( i =
p->nVarsAlloc; i < nVarsMax; i++ )
132 p->pVars[i].pNext =
p->pVars[i].pPrev = NULL;
135 p->nVarsAlloc = nVarsMax;
155 pVar->pNext = pVar->pPrev = NULL;
156 p->rVars.pRoot = NULL;
175 int * pRound, nRound;
176 int * pVars, nVars, i, k;
188 for ( i = 0; i < nRound; i++ )
202 printf(
"%d(%d) ", Counter,
p->rVars.nItems );
209 for ( i = 0; i < nVars; i++ )
220 for ( k = 0; k < nRound; k++ )
265 double * pdActs =
p->pSat->pdActivity;
273 if ( dfActBest < pdActs[pVar->Num] )
275 dfActBest = pdActs[pVar->Num];
289 return pVarBest->Num;
314 Msat_OrderRingRemove( &
p->rVars, &
p->pVars[
Var] );
318 for ( i = 0; i < vRound->
nSize; i++ )
326 Msat_OrderRingAddLast( &
p->rVars, &
p->pVars[vRound->
pArray[i]] );
356 for ( i = 0; i < vRound->
nSize; i++ )
359 if ( i != vRound->
nSize )
360 Msat_OrderRingAddLast( &
p->rVars, &
p->pVars[
Var] );
363 for ( i = 0; i < vRound->
nSize; i++ )
369 for ( k = 0; k < vRound2->
nSize; k++ )
372 if ( k == vRound2->
nSize )
373 Msat_OrderRingRemove( &
p->rVars, &
p->pVars[vRound->
pArray[i]] );
410 assert( pVar->pPrev == NULL );
411 assert( pVar->pNext == NULL );
414 if ( pRing->
pRoot == NULL )
422 pVar->pPrev = pRing->
pRoot->pPrev;
423 pVar->pNext = pRing->
pRoot;
424 pVar->pPrev->pNext = pVar;
425 pVar->pNext->pPrev = pVar;
458 if ( pRing->
pRoot == pVar )
459 pRing->
pRoot = pVar->pNext;
464 pVar->pPrev->pNext = pVar->pNext;
465 pVar->pNext->pPrev = pVar->pPrev;
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
#define REALLOC(type, obj, num)
ABC_NAMESPACE_IMPL_START abctime timeSelect
DECLARATIONS ///.
Msat_Clause_t * Msat_ClauseVecReadEntry(Msat_ClauseVec_t *p, int i)
struct Msat_Order_t_ Msat_Order_t
#define MSAT_ORDER_UNKNOWN
#define Msat_OrderVarIsUsedInCone(p, i)
#define Msat_OrderVarIsAssigned(p, i)
#define Msat_OrderRingForEachEntry(pRing, pVar, pNext)
void Msat_OrderClean(Msat_Order_t *p, Msat_IntVec_t *vCone)
struct Msat_OrderRing_t_ Msat_OrderRing_t
Msat_Order_t * Msat_OrderAlloc(Msat_Solver_t *pSat)
FUNCTION DEFINITIONS ///.
typedefABC_NAMESPACE_IMPL_START struct Msat_OrderVar_t_ Msat_OrderVar_t
DECLARATIONS ///.
void Msat_OrderVarUnassigned(Msat_Order_t *p, int Var)
void Msat_OrderVarAssigned(Msat_Order_t *p, int Var)
int Msat_OrderVarSelect(Msat_Order_t *p)
void Msat_OrderFree(Msat_Order_t *p)
int Msat_OrderCheck(Msat_Order_t *p)
#define Msat_OrderVarIsInBoundary(p, i)
void Msat_OrderSetBounds(Msat_Order_t *p, int nVarsMax)
void Msat_OrderUpdate(Msat_Order_t *p, int Var)
struct Msat_IntVec_t_ Msat_IntVec_t
typedefABC_NAMESPACE_HEADER_START struct Msat_Solver_t_ Msat_Solver_t
INCLUDES ///.
int Msat_IntVecReadSize(Msat_IntVec_t *p)
int * Msat_IntVecReadArray(Msat_IntVec_t *p)