156 int * pMapping,
Var, i;
159 for ( i = 0; i < nVarsMax; i++ )
285 if ( p->pSatMain == NULL || p->pSatTest == NULL || p->pSatBmc == NULL )
331 vVec->pArray[i] =
lit_neg( vVec->pArray[i] );
348 int RetValue, iVar, i;
350 RetValue =
sat_solver_solve( p->pSatMain, NULL, NULL, (ABC_INT64_T)nBTLimit, (ABC_INT64_T)0, (ABC_INT64_T)0, (ABC_INT64_T)0 );
384 (ABC_INT64_T)nBTLimit, (ABC_INT64_T)0, (ABC_INT64_T)0, (ABC_INT64_T)0 );
428 int RetValue, iVar, i;
441 for ( i = p->nSatVarsTestBeg; i < p->nSatVarsTestCur - 1; i++ )
446 (ABC_INT64_T)nBTLimit, (ABC_INT64_T)0, (ABC_INT64_T)0, (ABC_INT64_T)0 );
475 int LitM, LitN, VarM, VarN, i, j, k;
487 else if ( VarM > VarN )
568 int iLit, iLit2, i, k;
600 int LitM, VarM, VarN, i, j, k;
611 else if ( VarM > VarN )
640 int Iter, RetValue, fFailed, i;
646 printf(
"The property is trivially inductive.\n" );
653 printf(
"%4d : ", Iter );
656 if ( fVerbose && fVeryVerbose )
674 printf(
"\nProperty is proved after %d iterations.\n", Iter+1 );
684 printf(
" Reducing failed after %d iterations (BMC failed).\n", i );
690 printf(
" Reducing failed after %d iterations (nothing left).\n", i );
695 if ( fVerbose && fVeryVerbose )
698 printf(
" LitsInd = %3d. ",
Vec_IntSize(p->vCexMain) );
705 if ( fVerbose && fVeryVerbose )
708 printf(
" LitsRed = %3d. ",
Vec_IntSize(p->vCexMain) );
719 if ( p->pSatMain->qtail != p->pSatMain->qhead )
723 assert( p->pSatMain->qtail == p->pSatMain->qhead );
728 if ( Iter == nIters )
730 printf(
"Property is not proved after %d iterations.\n", nIters );
733 printf(
"Property is proved after %d iterations.\n", Iter );
static int * Vec_IntArray(Vec_Int_t *p)
void Fra_ClauMinimizeClause_rec(Cla_Man_t *p, Vec_Int_t *vBasis, Vec_Int_t *vExtra)
Vec_Int_t * Fra_ClauSaveLatchVars(Aig_Man_t *pMan, Cnf_Dat_t *pCnf, int fCsVars)
FUNCTION DEFINITIONS ///.
void Fra_ClauMinimizeClause(Cla_Man_t *p, Vec_Int_t *vBasis, Vec_Int_t *vExtra)
typedefABC_NAMESPACE_HEADER_START struct Aig_Man_t_ Aig_Man_t
INCLUDES ///.
void Fra_ClauPrintClause(Vec_Int_t *vSatCsVars, Vec_Int_t *vCex)
int sat_solver_addclause(sat_solver *s, lit *begin, lit *end)
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
void Aig_ManStop(Aig_Man_t *p)
int sat_solver_solve(sat_solver *s, lit *begin, lit *end, ABC_INT64_T nConfLimit, ABC_INT64_T nInsLimit, ABC_INT64_T nConfLimitGlobal, ABC_INT64_T nInsLimitGlobal)
static int lit_var(lit l)
void sat_solver_delete(sat_solver *s)
#define Vec_IntForEachEntryReverse(vVec, pEntry, i)
int Fra_Clau(Aig_Man_t *pMan, int nIters, int fVerbose, int fVeryVerbose)
#define Aig_ManForEachCi(p, pObj, i)
ITERATORS ///.
void Fra_ClauReduceClause(Vec_Int_t *vMain, Vec_Int_t *vNew)
#define Aig_ManForEachCo(p, pObj, i)
#define ABC_ALLOC(type, num)
Vec_Int_t * Fra_ClauSaveInputVars(Aig_Man_t *pMan, Cnf_Dat_t *pCnf, int nStarting)
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 ///.
Vec_Int_t * Fra_ClauSaveOutputVars(Aig_Man_t *pMan, Cnf_Dat_t *pCnf)
static lit lit_neg(lit l)
static void Vec_IntWriteEntry(Vec_Int_t *p, int i, int Entry)
static int Aig_ManCoNum(Aig_Man_t *p)
int Fra_ClauCheckClause(Cla_Man_t *p, Vec_Int_t *vClause, Vec_Int_t *vCex)
static Vec_Int_t * Vec_IntAlloc(int nCap)
FUNCTION DEFINITIONS ///.
#define Aig_ManForEachLiLoSeq(p, pObjLi, pObjLo, k)
static lit toLitCond(int v, int c)
static int Vec_IntEntry(Vec_Int_t *p, int i)
static int Aig_ManCiNum(Aig_Man_t *p)
static void Vec_IntComplement(Vec_Int_t *vVec)
int sat_solver_nvars(sat_solver *s)
#define ABC_NAMESPACE_IMPL_END
void Fra_ClauStop(Cla_Man_t *p)
static void sat_solver_act_var_clear(sat_solver *s)
static void Vec_IntPush(Vec_Int_t *p, int Entry)
Vec_Int_t * vSatVarsMainCs
#define Vec_IntForEachEntryStart(vVec, Entry, i, Start)
static void Aig_ObjChild0Flip(Aig_Obj_t *pObj)
static int Aig_ManObjNumMax(Aig_Man_t *p)
#define ABC_NAMESPACE_IMPL_START
static Aig_Obj_t * Aig_ManCo(Aig_Man_t *p, int i)
Cla_Man_t * Fra_ClauStart(Aig_Man_t *pMan)
static int Aig_ManRegNum(Aig_Man_t *p)
int sat_solver_simplify(sat_solver *s)
Vec_Int_t * vSatVarsTestNs
static int Vec_IntSize(Vec_Int_t *p)
void * Cnf_DataWriteIntoSolver(Cnf_Dat_t *p, int nFrames, int fInit)
Cnf_Dat_t * Cnf_DeriveSimple(Aig_Man_t *p, int nOutputs)
static int lit_sign(lit l)
void Fra_ClauRemapClause(int *pMap, Vec_Int_t *vClause, Vec_Int_t *vRemapped, int fInv)
static void Vec_IntShrink(Vec_Int_t *p, int nSizeNew)
static int sat_solver_var_literal(sat_solver *s, int v)
typedefABC_NAMESPACE_IMPL_START struct Cla_Man_t_ Cla_Man_t
DECLARATIONS ///.
int * Fra_ClauCreateMapping(Vec_Int_t *vSatVarsFrom, Vec_Int_t *vSatVarsTo, int nVarsMax)
void Cnf_DataFree(Cnf_Dat_t *p)
Vec_Int_t * vSatVarsTestCs
Vec_Int_t * vSatVarsBmcNs
static void Vec_IntFree(Vec_Int_t *p)
static void Vec_IntClear(Vec_Int_t *p)
#define Vec_IntForEachEntry(vVec, Entry, i)
MACRO DEFINITIONS ///.
static Vec_Int_t * Vec_IntSplitHalf(Vec_Int_t *vVec)
int Fra_ClauCheckBmc(Cla_Man_t *p, Vec_Int_t *vClause)
int Fra_ClauCheckProperty(Cla_Man_t *p, Vec_Int_t *vCex)