85 int s, i, RetValue, Status;
87 abctime nTimeNewOut = pPars->nSecLimit ? pPars->nSecLimit * CLOCKS_PER_SEC +
Abc_Clock() : 0;
90 if ( pPars->nFramesK > 1 )
91 pPars->fTransLoop = 1;
98 printf(
"Performing interpolation with %d constraints...\n",
Saig_ManConstrNum(pAig) );
103 printf(
"Property trivially fails in the initial state.\n" );
116 if ( pPars->fTransLoop )
124 if ( pPars->fVerbose )
126 printf(
"AIG: PI/PO/Reg = %d/%d/%d. And = %d. Lev = %d. CNF: Var/Cla = %d/%d.\n",
129 p->pCnfAig->nVars, p->pCnfAig->nClauses );
141 if ( pPars->fUseBackward )
150 p->pFrames =
Inter_ManFramesInter( pAig, p->nFrames, pPars->fUseBackward, pPars->fUseTwoFrames );
152 if ( pPars->fRewrite )
154 p->pFrames =
Dar_ManRwsat( pAigTemp = p->pFrames, 1, 0 );
162 if ( pPars->fUseBackward )
169 if ( pPars->fVerbose )
171 printf(
"Step = %2d. Frames = 1 + %d. And = %5d. Lev = %5d. ",
179 if ( !(pPars->fTransLoop || pPars->fUseBackward || pPars->nFramesK > 1) )
199 if ( pPars->nFramesMax && p->nFrames + i >= pPars->nFramesMax )
201 if ( pPars->fVerbose )
202 printf(
"Reached limit (%d) on the number of timeframes.\n", pPars->nFramesMax );
211 #ifdef ABC_USE_LIBRARIES
212 if ( pPars->fUseMiniSat )
214 assert( !pPars->fUseBackward );
215 RetValue = Inter_ManPerformOneStepM114p( p, pPars->fUsePudlak, pPars->fUseOther );
221 if ( pPars->fVerbose )
223 printf(
" I = %2d. Bmc =%3d. IntAnd =%6d. IntLev =%5d. Conf =%6d. ",
228 pPars->iFrameMax = i - 1 + p->nFrames;
233 if ( pPars->fVerbose )
234 printf(
"Found a real counterexample in frame %d.\n", p->nFrames );
236 *piFrame = p->nFrames;
243 pParsBmc->
nStart = p->nFrames;
244 pParsBmc->
fVerbose = pPars->fVerbose;
247 printf(
"Error: The problem should be SAT but it is UNSAT.\n" );
248 else if ( RetValue == -1 )
249 printf(
"Error: The problem timed out.\n" );
260 else if ( RetValue == -1 )
262 if ( pPars->nSecLimit && Abc_Clock() > nTimeNewOut )
264 if ( pPars->fVerbose )
265 printf(
"Reached timeout (%d seconds).\n", pPars->nSecLimit );
269 assert( p->nConfCur >= p->nConfLimit );
270 if ( pPars->fVerbose )
271 printf(
"Reached limit (%d) on the number of conflicts.\n", p->nConfLimit );
284 p->pInterNew->Time2Quit = nTimeNewOut;
286 p->pInterNew =
Dar_ManRwsat( pAigTemp = p->pInterNew, 1, 0 );
289 if ( p->pInterNew == NULL )
291 printf(
"Reached timeout (%d seconds) during rewriting.\n", pPars->nSecLimit );
304 if ( pPars->fVerbose )
305 printf(
"The problem is trivially true for all states.\n" );
314 if ( pPars->fCheckKstep )
318 if ( pPars->fTransLoop || pPars->fUseBackward || pPars->nFramesK > 1 )
347 p->timeEqu +=
Abc_Clock() - clk - timeTemp;
350 if ( pPars->fVerbose )
351 printf(
"Proved containment of interpolants.\n" );
357 if ( pPars->nSecLimit && Abc_Clock() > nTimeNewOut )
359 printf(
"Reached timeout (%d seconds).\n", pPars->nSecLimit );
366 if ( pPars->fTransLoop )
369 p->pInter = p->pInterNew;
373 if ( pPars->fUseBackward )
387 p->pInter = p->pInterNew;
Aig_Man_t * Inter_ManStartOneOutput(Aig_Man_t *p, int fAddFirstPo)
void Saig_ParBmcSetDefaultParams(Saig_ParBmc_t *p)
ABC_NAMESPACE_IMPL_START Aig_Man_t * Inter_ManStartInitState(int nRegs)
DECLARATIONS ///.
int Saig_ManBmcScalable(Aig_Man_t *pAig, Saig_ParBmc_t *pPars)
void Inter_ManClean(Inter_Man_t *p)
ABC_NAMESPACE_IMPL_START void Inter_ManSetDefaultParams(Inter_ManParams_t *p)
FUNCTION DEFINITIONS ///.
static int Saig_ManPoNum(Aig_Man_t *p)
Cnf_Dat_t * Cnf_Derive(Aig_Man_t *pAig, int nOutputs)
typedefABC_NAMESPACE_HEADER_START struct Aig_Man_t_ Aig_Man_t
INCLUDES ///.
static Aig_Obj_t * Aig_ObjChild0(Aig_Obj_t *pObj)
Aig_Man_t * Aig_ManCreateMiter(Aig_Man_t *p1, Aig_Man_t *p2, int fImpl)
void Aig_ManStop(Aig_Man_t *p)
Aig_Man_t * Inter_ManStartDuplicated(Aig_Man_t *p)
ABC_NAMESPACE_IMPL_START Aig_Man_t * Inter_ManFramesInter(Aig_Man_t *pAig, int nFrames, int fAddRegOuts, int fUseTwoFrames)
DECLARATIONS ///.
int Inter_ManCheckInductiveContainment(Aig_Man_t *pTrans, Aig_Man_t *pInter, int nSteps, int fBackward)
Inter_Man_t * Inter_ManCreate(Aig_Man_t *pAig, Inter_ManParams_t *pPars)
DECLARATIONS ///.
int Inter_ManCheckInitialState(Aig_Man_t *p)
DECLARATIONS ///.
int Inter_CheckPerform(Inter_Check_t *p, Cnf_Dat_t *pCnfInt, abctime nTimeNewOut)
int Inter_ManPerformOneStep(Inter_Man_t *p, int fUseBias, int fUseBackward, abctime nTimeNewOut)
static void Vec_PtrPush(Vec_Ptr_t *p, void *Entry)
static Aig_Obj_t * Aig_ManConst0(Aig_Man_t *p)
int Inter_ManPerformInterpolation(Aig_Man_t *pAig, Inter_ManParams_t *pPars, int *piFrame)
static abctime Abc_Clock()
ABC_NAMESPACE_IMPL_START Aig_Man_t * Dar_ManRwsat(Aig_Man_t *pAig, int fBalance, int fVerbose)
DECLARATIONS ///.
static int Aig_ManNodeNum(Aig_Man_t *p)
typedefABC_NAMESPACE_HEADER_START struct Inter_Man_t_ Inter_Man_t
INCLUDES ///.
static int Aig_ManCoNum(Aig_Man_t *p)
static int Abc_MinInt(int a, int b)
static int Saig_ManConstrNum(Aig_Man_t *p)
Inter_Check_t * Inter_CheckStart(Aig_Man_t *pTrans, int nFramesK)
MACRO DEFINITIONS ///.
static int Aig_ManCiNum(Aig_Man_t *p)
#define ABC_NAMESPACE_IMPL_END
static int Saig_ManRegNum(Aig_Man_t *p)
#define ABC_NAMESPACE_IMPL_START
static Aig_Obj_t * Aig_ManCo(Aig_Man_t *p, int i)
int Aig_ManLevelNum(Aig_Man_t *p)
void Inter_ManStop(Inter_Man_t *p, int fProved)
static int Aig_ManRegNum(Aig_Man_t *p)
Cnf_Dat_t * Cnf_DeriveSimple(Aig_Man_t *p, int nOutputs)
static int Saig_ManPiNum(Aig_Man_t *p)
MACRO DEFINITIONS ///.
void Inter_CheckStop(Inter_Check_t *p)
void Cnf_DataFree(Cnf_Dat_t *p)
static int Aig_ManAndNum(Aig_Man_t *p)
int Inter_ManCheckContainment(Aig_Man_t *pNew, Aig_Man_t *pOld)
FUNCTION DEFINITIONS ///.
Aig_Man_t * Aig_ManDupSimple(Aig_Man_t *p)
DECLARATIONS ///.
typedefABC_NAMESPACE_HEADER_START struct Inter_ManParams_t_ Inter_ManParams_t
INCLUDES ///.