44#define HLEFT(i) ((i)<<1)
45#define HRIGHT(i) (((i)<<1)+1)
46#define HPARENT(i) ((i)>>1)
47#define HCOMPARE(p, i, j) ((p)->pSat->pdActivity[i] > (p)->pSat->pdActivity[j])
48#define HHEAP(p, i) ((p)->vHeap->pArray[i])
49#define HSIZE(p) ((p)->vHeap->nSize)
50#define HOKAY(p, i) ((i) >= 0 && (i) < (p)->vIndex->nSize)
51#define HINHEAP(p, i) (HOKAY(p, i) && (p)->vIndex->pArray[i] != 0)
52#define HEMPTY(p) (HSIZE(p) == 1)
105 p->vIndex->nSize = nVarsMax;
123 for ( i = 0; i <
p->vIndex->nSize; i++ )
124 p->vIndex->pArray[i] = 0;
125 for ( i = 0; i < vCone->
nSize; i++ )
127 assert( i+1 <
p->vHeap->nCap );
128 p->vHeap->pArray[i+1] = vCone->
pArray[i];
131 p->vIndex->pArray[vCone->
pArray[i]] = i+1;
133 p->vHeap->nSize = vCone->
nSize + 1;
149 return Msat_HeapCheck_rec(
p, 1 );
198 Var = Msat_HeapGetTop(
p);
242 Msat_HeapInsert(
p,
Var );
264 Msat_HeapIncrease(
p,
Var );
288 Msat_HeapCheck_rec(
p,
HLEFT(i) ) &&
290 Msat_HeapCheck_rec(
p,
HRIGHT(i) )
310 p->vHeap->pArray[1] = NewTop;
311 p->vIndex->pArray[NewTop] = 1;
312 p->vIndex->pArray[Result] = 0;
313 if (
p->vHeap->nSize > 1 )
314 Msat_HeapPercolateDown(
p, 1 );
332 p->vIndex->pArray[n] =
HSIZE(
p);
334 Msat_HeapPercolateUp(
p,
p->vIndex->pArray[n] );
350 Msat_HeapPercolateUp(
p,
p->vIndex->pArray[n] );
370 p->vIndex->pArray[
HHEAP(
p, i)] = i;
373 p->vHeap->pArray[i] = x;
374 p->vIndex->pArray[x] = i;
400 p->vHeap->pArray[i] =
HHEAP(
p, Child);
401 p->vIndex->pArray[
HHEAP(
p, i)] = i;
404 p->vHeap->pArray[i] = x;
405 p->vIndex->pArray[x] = i;
#define ABC_ALLOC(type, num)
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
ABC_NAMESPACE_IMPL_START abctime timeSelect
DECLARATIONS ///.
#define MSAT_VAR_UNASSIGNED
struct Msat_Order_t_ Msat_Order_t
#define MSAT_ORDER_UNKNOWN
#define HCOMPARE(p, i, j)
void Msat_OrderClean(Msat_Order_t *p, Msat_IntVec_t *vCone)
Msat_Order_t * Msat_OrderAlloc(Msat_Solver_t *pSat)
FUNCTION DEFINITIONS ///.
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)
void Msat_OrderSetBounds(Msat_Order_t *p, int nVarsMax)
void Msat_OrderUpdate(Msat_Order_t *p, int Var)
void Msat_IntVecGrow(Msat_IntVec_t *p, int nCapMin)
int Msat_IntVecPop(Msat_IntVec_t *p)
struct Msat_IntVec_t_ Msat_IntVec_t
typedefABC_NAMESPACE_HEADER_START struct Msat_Solver_t_ Msat_Solver_t
INCLUDES ///.
Msat_IntVec_t * Msat_IntVecAlloc(int nCap)
FUNCTION DEFINITIONS ///.
void Msat_IntVecFree(Msat_IntVec_t *p)
void Msat_IntVecPush(Msat_IntVec_t *p, int Entry)