36static inline void Aig_ObjSetFrames(
Aig_Obj_t ** pObjMap,
int nFs,
Aig_Obj_t * pObj,
int i,
Aig_Obj_t * pNode ) { pObjMap[nFs*pObj->
Id + i] = pNode; }
38static inline Aig_Obj_t * Aig_ObjChild0Frames(
Aig_Obj_t ** pObjMap,
int nFs,
Aig_Obj_t * pObj,
int i ) {
return Aig_ObjFanin0(pObj)? Aig_NotCond(Aig_ObjFrames(pObjMap,nFs,Aig_ObjFanin0(pObj),i), Aig_ObjFaninC0(pObj)) : NULL; }
39static inline Aig_Obj_t * Aig_ObjChild1Frames(
Aig_Obj_t ** pObjMap,
int nFs,
Aig_Obj_t * pObj,
int i ) {
return Aig_ObjFanin1(pObj)? Aig_NotCond(Aig_ObjFrames(pObjMap,nFs,Aig_ObjFanin1(pObj),i), Aig_ObjFaninC1(pObj)) : NULL; }
61 unsigned * pInfo, * pInfo0, * pInfo1, * pInfoMask, * pInfoMask2;
62 int i, w, f, RetValue = 1;
65 printf(
"Simulating %d nodes and %d flops for %d frames with %d words... ",
66 Aig_ManNodeNum(
p), Aig_ManRegNum(
p), nFrames,
nWords );
68 vInfo = Vec_PtrAllocSimInfo( Aig_ManObjNumMax(
p)+2,
nWords );
69 Vec_PtrCleanSimInfo( vInfo, 0,
nWords );
70 vProbs = Vec_IntStart( Saig_ManPoNum(
p) );
71 vProbs2 = Vec_IntStart( Saig_ManPoNum(
p) );
73 pInfo = (
unsigned *)Vec_PtrEntry( vInfo, Aig_ObjId(Aig_ManConst1(
p)) );
74 for ( w = 0; w <
nWords; w++ )
79 pInfo = (
unsigned *)Vec_PtrEntry( vInfo, Aig_ObjId(pObj) );
80 for ( w = 0; w <
nWords; w++ )
84 pInfoMask = (
unsigned *)Vec_PtrEntry( vInfo, Aig_ManObjNumMax(
p) );
85 pInfoMask2 = (
unsigned *)Vec_PtrEntry( vInfo, Aig_ManObjNumMax(
p)+1 );
86 for ( f = 0; f < nFrames; f++ )
91 pInfo = (
unsigned *)Vec_PtrEntry( vInfo, Aig_ObjId(pObj) );
92 for ( w = 0; w <
nWords; w++ )
98 pInfo = (
unsigned *)Vec_PtrEntry( vInfo, Aig_ObjId(pObj) );
99 pInfo0 = (
unsigned *)Vec_PtrEntry( vInfo, Aig_ObjId(pObjLi) );
100 for ( w = 0; w <
nWords; w++ )
101 pInfo[w] = pInfo0[w];
106 pInfo = (
unsigned *)Vec_PtrEntry( vInfo, Aig_ObjId(pObj) );
107 pInfo0 = (
unsigned *)Vec_PtrEntry( vInfo, Aig_ObjFaninId0(pObj) );
108 pInfo1 = (
unsigned *)Vec_PtrEntry( vInfo, Aig_ObjFaninId1(pObj) );
109 if ( Aig_ObjFaninC0(pObj) )
111 if ( Aig_ObjFaninC1(pObj) )
112 for ( w = 0; w <
nWords; w++ )
113 pInfo[w] = ~(pInfo0[w] | pInfo1[w]);
115 for ( w = 0; w <
nWords; w++ )
116 pInfo[w] = ~pInfo0[w] & pInfo1[w];
120 if ( Aig_ObjFaninC1(pObj) )
121 for ( w = 0; w <
nWords; w++ )
122 pInfo[w] = pInfo0[w] & ~pInfo1[w];
124 for ( w = 0; w <
nWords; w++ )
125 pInfo[w] = pInfo0[w] & pInfo1[w];
129 for ( w = 0; w <
nWords; w++ )
130 pInfoMask[w] = pInfoMask2[w] = 0;
134 pInfo = (
unsigned *)Vec_PtrEntry( vInfo, Aig_ObjId(pObj) );
135 pInfo0 = (
unsigned *)Vec_PtrEntry( vInfo, Aig_ObjFaninId0(pObj) );
136 if ( i < Saig_ManPoNum(
p)-Saig_ManConstrNum(
p) || i >= Saig_ManPoNum(
p) )
138 if ( Aig_ObjFaninC0(pObj) )
140 for ( w = 0; w <
nWords; w++ )
141 pInfo[w] = ~pInfo0[w];
145 for ( w = 0; w <
nWords; w++ )
146 pInfo[w] = pInfo0[w];
151 if ( Aig_ObjFaninC0(pObj) )
153 for ( w = 0; w <
nWords; w++ )
154 pInfo[w] |= ~pInfo0[w];
158 for ( w = 0; w <
nWords; w++ )
159 pInfo[w] |= pInfo0[w];
163 if ( i < Saig_ManPoNum(
p)-Saig_ManConstrNum(
p) )
165 for ( w = 0; w <
nWords; w++ )
166 pInfoMask[w] |= pInfo[w];
168 else if ( i < Saig_ManPoNum(
p) )
170 for ( w = 0; w <
nWords; w++ )
171 pInfoMask2[w] |= pInfo[w];
177 pInfo = (
unsigned *)Vec_PtrEntry( vInfo, Aig_ObjId(pObj) );
178 for ( w = 0; w <
nWords; w++ )
179 Vec_IntAddToEntry( vProbs, i, Aig_WordCountOnes(pInfo[w]) );
180 if ( i < Saig_ManPoNum(
p)-Saig_ManConstrNum(
p) )
183 for ( w = 0; w <
nWords; w++ )
184 if ( pInfo[w] & ~pInfoMask2[w] )
188 printf(
"Primary output %d fails on some input patterns.\n", i );
193 for ( w = 0; w <
nWords; w++ )
194 Vec_IntAddToEntry( vProbs2, i, Aig_WordCountOnes(pInfo[w] & pInfoMask[w]) );
199 Abc_PrintTime( 1,
"T", Abc_Clock() - clk );
205 if ( i < Saig_ManPoNum(
p) - Saig_ManConstrNum(
p) )
206 printf(
"Primary output : " );
208 printf(
"Constraint %3d : ", i-(Saig_ManPoNum(
p) - Saig_ManConstrNum(
p)) );
209 printf(
"ProbOne = %f ", (
float)Vec_IntEntry(vProbs, i)/(32*
nWords*nFrames) );
210 printf(
"ProbOneC = %f ", (
float)Vec_IntEntry(vProbs2, i)/(32*
nWords*nFrames) );
211 printf(
"AllZeroValue = %d ", Aig_ObjPhase(pObj) );
217 Vec_PtrFree( vInfo );
218 Vec_IntFree( vProbs );
219 Vec_IntFree( vProbs2 );
239 Aig_Obj_t * pObj, * pObjLi, * pObjLo, * pObjNew;
247 pFrames =
Aig_ManStart( Aig_ManObjNumMax(pAig) * nFrames );
248 pFrames->pName = Abc_UtilStrsav( pAig->pName );
249 pFrames->pSpec = Abc_UtilStrsav( pAig->pSpec );
251 for ( f = 0; f < nFrames; f++ )
252 Aig_ObjSetFrames( pObjMap, nFrames, Aig_ManConst1(pAig), f, Aig_ManConst1(pFrames) );
254 for ( f = 0; f < nFrames; f++ )
256 Aig_ObjSetFrames( pObjMap, nFrames, pObj, f,
Aig_ObjCreateCi(pFrames) );
259 Aig_ObjSetFrames( pObjMap, nFrames, pObj, 0,
Aig_ObjCreateCi(pFrames) );
262 for ( f = 0; f < nFrames; f++ )
267 pObjNew =
Aig_And( pFrames, Aig_ObjChild0Frames(pObjMap,nFrames,pObj,f), Aig_ObjChild1Frames(pObjMap,nFrames,pObj,f) );
268 Aig_ObjSetFrames( pObjMap, nFrames, pObj, f, pObjNew );
273 pObjNew = Aig_ObjChild0Frames(pObjMap,nFrames,pObjLi,f);
274 if ( f < nFrames - 1 )
275 Aig_ObjSetFrames( pObjMap, nFrames, pObjLo, f+1, pObjNew );
285 Aig_Obj_t * pNode0 = pObjMap[nFrames*Aig_ObjId(pObjR)+0];
286 Aig_Obj_t * pNode1 = pObjMap[nFrames*Aig_ObjId(pObjR)+1];
287 Aig_Obj_t * pFan0 = Aig_NotCond( pNode0, Aig_IsComplement(pObj) );
288 Aig_Obj_t * pFan1 = Aig_NotCond( pNode1, !Aig_IsComplement(pObj) );
316 pObj = Aig_ManCo( pFrame, Counter );
317 Lit = toLitCond( pCnf->
pVarNums[Aig_ObjId(pObj)], 0 );
318 status =
sat_solver_solve( pSat, &Lit, &Lit + 1, (ABC_INT64_T)nConfs, 0, 0, 0 );
348 int i, k, k2, Counter;
358 assert( Aig_ManCoNum(pFrames) == Vec_VecSizeSize(vCands) );
364 printf(
"Filtered cands: " );
374 Vec_PtrWriteEntry( vNodes, k2++, pObj );
376 printf(
"%d:%s%d ", i, Aig_IsComplement(pObj)?
"!":
"", Aig_ObjId(Aig_Regular(pObj)) );
379 Vec_PtrShrink( vNodes, k2 );
412 for ( i = 0; i < nFrames * Aig_ManObjNumMax(
p); i++ )
413 if ( pObjMap[i] && Aig_ObjIsNone( Aig_Regular(pObjMap[i]) ) )
415 assert(
p->pObjCopies == NULL );
416 p->pObjCopies = pObjMap;
434 Aig_Obj_t * pObj, * pObjLi, * pObjLo, * pObjNew;
440 pFrames =
Aig_ManStart( Aig_ManObjNumMax(pAig) * nFrames );
441 pFrames->pName = Abc_UtilStrsav( pAig->pName );
442 pFrames->pSpec = Abc_UtilStrsav( pAig->pSpec );
444 for ( f = 0; f < nFrames; f++ )
445 Aig_ObjSetFrames( pObjMap, nFrames, Aig_ManConst1(pAig), f, Aig_ManConst1(pFrames) );
447 for ( f = 0; f < nFrames; f++ )
449 Aig_ObjSetFrames( pObjMap, nFrames, pObj, f,
Aig_ObjCreateCi(pFrames) );
452 Aig_ObjSetFrames( pObjMap, nFrames, pObj, 0,
Aig_ObjCreateCi(pFrames) );
454 for ( f = 0; f < nFrames; f++ )
458 pObjNew =
Aig_And( pFrames, Aig_ObjChild0Frames(pObjMap,nFrames,pObj,f), Aig_ObjChild1Frames(pObjMap,nFrames,pObj,f) );
459 Aig_ObjSetFrames( pObjMap, nFrames, pObj, f, pObjNew );
464 pObjNew = Aig_ObjChild0Frames(pObjMap,nFrames,pObjLi,f);
465 if ( f < nFrames - 1 )
466 Aig_ObjSetFrames( pObjMap, nFrames, pObjLo, f+1, pObjNew );
470 for ( f = nFrames-1; f < nFrames; f++ )
474 pObjNew =
Aig_ObjCreateCo( pFrames, Aig_ObjChild0Frames(pObjMap,nFrames,pObj,f) );
475 Aig_ObjSetFrames( pObjMap, nFrames, pObj, f, pObjNew );
480 assert( pAig->pObjCopies == NULL );
481 pAig->pObjCopies = pObjMap;
504 if ( !Aig_ObjIsNode(pObj) && !Aig_ObjIsCi(pObj) )
507 pInfo = (
unsigned *)Vec_PtrEntry( vInfo, i );
508 if ( Abc_InfoHasBit(pInfo, *piPat) != sat_solver_var_value(pSat, pCnf->
pVarNums[i]) )
509 Abc_InfoXorBit(pInfo, *piPat);
530 Lits[0] = toLitCond( pCnf->
pVarNums[Aig_ObjId(pOut)], 0 );
531 Lits[1] = toLitCond( pCnf->
pVarNums[Aig_ObjId(pObj)], !iPol );
532 status =
sat_solver_solve( pSat, Lits, Lits + 2, (ABC_INT64_T)nConfs, (ABC_INT64_T)nProps, 0, 0 );
547 if ( *piPat == Vec_PtrReadWordsSimInfo(vInfo) * 32 )
550 printf(
"Warning: Reached the limit on the number of patterns.\n" );
576 vCands = Vec_VecAlloc( nFrames );
580 assert( Aig_ManCoNum(pFrames) == 1 );
587 for ( f = 0; f < nFrames; f++ )
591 if ( !Aig_ObjIsCand(pObj) )
593 if ( Aig_ObjIsTravIdCurrent(
p, pObj) )
596 pRepr =
p->pObjCopies[nFrames*i + nFrames-1-f];
597 pReprR = Aig_Regular(pRepr);
598 if ( pCnf->
pVarNums[Aig_ObjId(pReprR)] < 0 )
605 Aig_ObjSetTravIdCurrent(
p, pObj);
606 if ( Saig_ObjIsLo(
p, pObj) )
607 Aig_ObjSetTravIdCurrent(
p, Aig_ObjFanin0(Saig_ObjLoToLi(
p, pObj)) );
609 Vec_VecPush( vCands, f, Aig_NotCond( pObj, (
value ==
l_True) ^ Aig_IsComplement(pRepr) ) );
621 printf(
"Found %3d candidates.\n", Vec_VecSizeSize(vCands) );
624 printf(
"Level %d. Cands =%d ", k, Vec_PtrSize(vNodes) );
633 if ( Vec_VecSizeSize(vCands) )
634 printf(
"Found %3d constraints after filtering.\n", Vec_VecSizeSize(vCands) );
639 printf(
"Level %d. Constr =%d ", k, Vec_PtrSize(vNodes) );
663 int iPat = 0, nWordsAlloc = 16;
672 int i, j, k, Lit, status, nCands = 0;
673 assert( Saig_ManPoNum(
p) == 1 );
674 if ( Saig_ManPoNum(
p) != 1 )
676 printf(
"The number of outputs is different from 1.\n" );
683 assert( Aig_ManCoNum(pFrames) == 1 );
686 printf(
"Detecting constraints with %d frames, %d conflicts, and %d propagations.\n", nFrames, nConfs, nProps );
687 printf(
"Frames: " );
698 Lit = toLitCond( pCnf->
pVarNums[Aig_ObjId(Aig_ManCo(pFrames,0))], 0 );
699 status =
sat_solver_solve( pSat, &Lit, &Lit + 1, (ABC_INT64_T)nConfs, 0, 0, 0 );
702 printf(
"The problem is trivially UNSAT (inductive with k=%d).\n", nFrames-1 );
710 printf(
"Solver could not solve the original problem.\n" );
719 vInfo = Vec_PtrAllocSimInfo( Aig_ManObjNumMax(pFrames), nWordsAlloc );
720 Vec_PtrCleanSimInfo( vInfo, 0, nWordsAlloc );
724 pInfo = (
unsigned *)Vec_PtrEntry( vInfo, i );
726 memset( (
char*)pInfo, 0xff, 4*nWordsAlloc );
736 if ( !Aig_ObjIsNode(pObj) && !Aig_ObjIsCi(pObj) )
738 Bar_ProgressUpdate( pProgress, i, NULL );
740 pInfo = (
unsigned *)Vec_PtrEntry( vInfo, i );
741 for ( k = 0; k < nWordsAlloc; k++ )
742 if ( pInfo[k] != ~0 )
744 if ( k == nWordsAlloc )
748 pObj->
fMarkA = 1, nCands++;
753 for ( k = 0; k < nWordsAlloc; k++ )
756 if ( k == nWordsAlloc )
760 pObj->
fMarkB = 1, nCands++;
772 printf(
"Found %3d classes of candidates.\n", nCands );
773 vCands = Vec_VecAlloc( nFrames );
774 for ( k = 0; k < nFrames; k++ )
778 if ( !Aig_ObjIsNode(pObj) && !Aig_ObjIsCi(pObj) )
780 pRepr =
p->pObjCopies[nFrames*i + nFrames-1-k];
784 if ( Aig_Regular(pRepr)->fMarkA )
786 pObjNew = Aig_NotCond(pObj, !Aig_IsComplement(pRepr));
788 for ( j = 0; j < k; j++ )
789 if ( Vec_PtrFind( Vec_VecEntry(vCands, j), pObjNew ) >= 0 )
792 Vec_VecPush( vCands, k, pObjNew );
795 else if ( Aig_Regular(pRepr)->fMarkB )
797 pObjNew = Aig_NotCond(pObj, Aig_IsComplement(pRepr));
799 for ( j = 0; j < k; j++ )
800 if ( Vec_PtrFind( Vec_VecEntry(vCands, j), pObjNew ) >= 0 )
803 Vec_VecPush( vCands, k, pObjNew );
812 printf(
"Found %3d candidates.\n", Vec_VecSizeSize(vCands) );
815 printf(
"Level %d. Cands =%d ", k, Vec_PtrSize(vNodes) );
824 if ( Vec_VecSizeSize(vCands) )
825 printf(
"Found %3d constraints after filtering.\n", Vec_VecSizeSize(vCands) );
830 printf(
"Level %d. Constr =%d ", k, Vec_PtrSize(vNodes) );
837 Vec_PtrFree( vInfo );
863 Vec_VecFreeP( &vCands );
883 int i, j, k, nNewFlops;
888 if ( vCands == NULL || Vec_VecSizeSize(vCands) == 0 )
890 Vec_VecFreeP( &vCands );
895 pNew->nConstrs = pAig->nConstrs + Vec_VecSizeSize(vCands);
900 vNewFlops = Vec_PtrAlloc( 100 );
905 Vec_PtrPush( vNewFlops, Aig_ObjRealCopy(pObj) );
906 for ( j = 0; j < i; j++ )
920 for ( j = 0; j < i; j++ )
924 assert( nNewFlops == Vec_PtrSize(vNewFlops) );
926 Vec_VecFreeP( &vCands );
927 Vec_PtrFree( vNewFlops );
945 Aig_Obj_t * pMiter, * pFlopOut, * pFlopIn, * pObj;
947 if ( Aig_ManConstrNum(pAig) == 0 )
949 assert( Aig_ManConstrNum(pAig) < Saig_ManPoNum(pAig) );
952 pAigNew->pName = Abc_UtilStrsav( pAig->pName );
953 pAigNew->pSpec = Abc_UtilStrsav( pAig->pSpec );
955 Aig_ManConst1(pAig)->pData = Aig_ManConst1( pAigNew );
961 pObj->
pData =
Aig_And( pAigNew, Aig_ObjChild0Copy(pObj), Aig_ObjChild1Copy(pObj) );
964 pMiter = Aig_ManConst0( pAigNew );
967 if ( i < Saig_ManPoNum(pAig)-Aig_ManConstrNum(pAig) )
969 pMiter =
Aig_Or( pAigNew, pMiter, Aig_NotCond( Aig_ObjChild0Copy(pObj), fCompl ) );
973 if ( Saig_ManRegNum(pAig) > 0 )
976 pFlopIn =
Aig_Or( pAigNew, pMiter, pFlopOut );
984 if ( i >= Saig_ManPoNum(pAig)-Aig_ManConstrNum(pAig) )
986 pMiter =
Aig_And( pAigNew, Aig_ObjChild0Copy(pObj), Aig_Not(pFlopIn) );
995 if ( Saig_ManRegNum(pAig) > 0 )
#define ABC_CALLOC(type, num)
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
int Aig_ManSeqCleanup(Aig_Man_t *p)
void Aig_ManSetRegNum(Aig_Man_t *p, int nRegs)
Aig_Man_t * Aig_ManDupDfs(Aig_Man_t *p)
#define Aig_ManForEachObj(p, pObj, i)
void Aig_ManStop(Aig_Man_t *p)
void Aig_ManIncrementTravId(Aig_Man_t *p)
DECLARATIONS ///.
#define Aig_ManForEachCi(p, pObj, i)
ITERATORS ///.
Aig_Obj_t * Aig_And(Aig_Man_t *p, Aig_Obj_t *p0, Aig_Obj_t *p1)
Aig_Obj_t * Aig_ObjCreateCo(Aig_Man_t *p, Aig_Obj_t *pDriver)
struct Aig_Obj_t_ Aig_Obj_t
Aig_Man_t * Aig_ManStart(int nNodesMax)
DECLARATIONS ///.
Aig_Man_t * Aig_ManFrames(Aig_Man_t *pAig, int nFs, int fInit, int fOuts, int fRegs, int fEnlarge, Aig_Obj_t ***ppObjMap)
FUNCTION DEFINITIONS ///.
Aig_Man_t * Aig_ManDupWithoutPos(Aig_Man_t *p)
void Aig_ManPrintStats(Aig_Man_t *p)
#define Aig_ManForEachNode(p, pObj, i)
typedefABC_NAMESPACE_HEADER_START struct Aig_Man_t_ Aig_Man_t
INCLUDES ///.
int Aig_ManCleanup(Aig_Man_t *p)
void Aig_ManCleanMarkAB(Aig_Man_t *p)
#define Aig_ManForEachPiSeq(p, pObj, i)
SEQUENTIAL ITERATORS ///.
#define Aig_ManForEachCo(p, pObj, i)
#define Aig_ManForEachPoSeq(p, pObj, i)
Aig_Obj_t * Aig_ObjCreateCi(Aig_Man_t *p)
DECLARATIONS ///.
#define Aig_ManForEachLoSeq(p, pObj, i)
Aig_Obj_t * Aig_Or(Aig_Man_t *p, Aig_Obj_t *p0, Aig_Obj_t *p1)
#define Aig_ManForEachLiLoSeq(p, pObjLi, pObjLo, k)
unsigned Aig_ManRandom(int fReset)
void Bar_ProgressStop(Bar_Progress_t *p)
Bar_Progress_t * Bar_ProgressStart(FILE *pFile, int nItemsTotal)
FUNCTION DEFINITIONS ///.
struct Bar_Progress_t_ Bar_Progress_t
BASIC TYPES ///.
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
ABC_NAMESPACE_IMPL_START typedef signed char value
Cnf_Dat_t * Cnf_DeriveSimple(Aig_Man_t *p, int nOutputs)
struct Cnf_Dat_t_ Cnf_Dat_t
void Cnf_DataFree(Cnf_Dat_t *p)
void * Cnf_DataWriteIntoSolver(Cnf_Dat_t *p, int nFrames, int fInit)
Aig_Man_t * Saig_ManDupUnfoldConstrsFunc(Aig_Man_t *pAig, int nFrames, int nConfs, int nProps, int fOldAlgo, int fVerbose)
Aig_Man_t * Saig_ManDupFoldConstrsFunc(Aig_Man_t *pAig, int fCompl, int fVerbose, int fSeqCleanup)
void Saig_CollectSatValues(sat_solver *pSat, Cnf_Dat_t *pCnf, Vec_Ptr_t *vInfo, int *piPat)
int Saig_DetectTryPolarity(sat_solver *pSat, int nConfs, int nProps, Cnf_Dat_t *pCnf, Aig_Obj_t *pObj, int iPol, Vec_Ptr_t *vInfo, int *piPat, int fVerbose)
int Saig_ManFilterUsingIndOne_new(Aig_Man_t *p, Aig_Man_t *pFrame, sat_solver *pSat, Cnf_Dat_t *pCnf, int nConfs, int nProps, int Counter)
int Ssw_ManProfileConstraints(Aig_Man_t *p, int nWords, int nFrames, int fVerbose)
FUNCTION DEFINITIONS ///.
Aig_Man_t * Saig_ManUnrollCOI(Aig_Man_t *pAig, int nFrames)
Aig_Man_t * Saig_ManCreateIndMiter(Aig_Man_t *pAig, Vec_Vec_t *vCands)
void Saig_ManFilterUsingInd(Aig_Man_t *p, Vec_Vec_t *vCands, int nConfs, int nProps, int fVerbose)
Vec_Vec_t * Ssw_ManFindDirectImplications(Aig_Man_t *p, int nFrames, int nConfs, int nProps, int fVerbose)
Aig_Man_t * Saig_ManUnrollCOI_(Aig_Man_t *p, int nFrames)
Vec_Vec_t * Saig_ManDetectConstrFunc(Aig_Man_t *p, int nFrames, int nConfs, int nProps, int fVerbose)
void Saig_ManDetectConstrFuncTest(Aig_Man_t *p, int nFrames, int nConfs, int nProps, int fOldAlgo, int fVerbose)
#define Saig_ManForEachLiLo(p, pObjLi, pObjLo, i)
#define Saig_ManForEachLi(p, pObj, i)
#define Saig_ManForEachPo(p, pObj, i)
#define Saig_ManForEachPi(p, pObj, i)
int sat_solver_get_var_value(sat_solver *s, int v)
void sat_solver_delete(sat_solver *s)
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.
#define Vec_VecForEachLevel(vGlob, vVec, i)
MACRO DEFINITIONS ///.
typedefABC_NAMESPACE_HEADER_START struct Vec_Vec_t_ Vec_Vec_t
INCLUDES ///.