51 assert( iVarA >= 0 && iVarB >= 0 );
81 assert( iVarA >= 0 && iVarB >= 0 && iVarC >= 0 );
131 int Lit, Cid,
Var, status, i;
132 clock_t clk = clock();
152 for ( i = 0; i < pCnf->
nClauses; i++ )
160 for ( i = 0; i < pCnf->
nClauses; i++ )
201 ABC_PRT(
"Total interpolation time", clock() - clk );
247 Aig_Man_t * pAigTemp, * pInter, * pBase = NULL;
253 int ShiftP[2], ShiftCnf[2], ShiftOr[2], ShiftAssume;
254 int Cid, Lit, status, i, k, c;
255 clock_t clk = clock();
266 ShiftP[1] = 2*pCnf->
nVars + 3*nOuts;
267 ShiftCnf[0] = ShiftP[0] + nOuts;
268 ShiftCnf[1] = ShiftP[1] + nOuts;
269 ShiftOr[0] = ShiftCnf[0] + 2*pCnf->
nVars;
270 ShiftOr[1] = ShiftCnf[1] + 2*pCnf->
nVars;
271 ShiftAssume = ShiftOr[1] + nOuts;
275 for ( i = ShiftCnf[0]; i < ShiftP[1]; i++ )
280 for ( k = 0; k < 2; k++ )
284 for ( i = 0; i < pCnf->
nClauses; i++ )
294 for ( i = 0; i < pCnf->
nClauses; i++ )
312 for ( k = 0; k < nOuts; k++ )
318 for ( k = 0; k < 2*nOuts; k++ )
323 for ( k = 0; k < 2*nOuts; k++ )
328 for ( k = 0; k < nOuts; k++ )
356 for ( i = 0; i < pCnfInter->
nVars; i++ )
358 for ( c = 0; c < 2; c++ )
363 for ( i = 0; i < pCnfInter->
nClauses; i++ )
393 ABC_PRT(
"Reparameterization time", clock() - clk );
Aig_Obj_t * Aig_ObjCreateCo(Aig_Man_t *p, Aig_Obj_t *pDriver)
static int * Vec_IntArray(Vec_Int_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 ///.
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
void Aig_ManStop(Aig_Man_t *p)
void sat_solver2_delete(sat_solver2 *s)
Aig_Man_t * Aig_ManStart(int nNodesMax)
DECLARATIONS ///.
void Aig_ManPrintStats(Aig_Man_t *p)
#define Aig_ManForEachCi(p, pObj, i)
ITERATORS ///.
Aig_Man_t * Aig_ManInterRepar(Aig_Man_t *pMan, int fVerbose)
#define Aig_ManForEachCo(p, pObj, i)
sat_solver2 * sat_solver2_new(void)
void * Sat_ProofInterpolant(sat_solver2 *s, void *pGloVars)
void Sat_Solver2PrintStats(FILE *pFile, sat_solver2 *p)
int sat_solver2_addclause(sat_solver2 *s, lit *begin, lit *end, int Id)
ABC_NAMESPACE_IMPL_START Aig_Man_t * Dar_ManRwsat(Aig_Man_t *pAig, int fBalance, int fVerbose)
DECLARATIONS ///.
void sat_solver2_setnvars(sat_solver2 *s, int n)
Aig_Obj_t * Aig_And(Aig_Man_t *p, Aig_Obj_t *p0, Aig_Obj_t *p1)
static void Vec_IntWriteEntry(Vec_Int_t *p, int i, int Entry)
void Aig_ManInterTest(Aig_Man_t *pMan, int fVerbose)
static int Aig_ManCoNum(Aig_Man_t *p)
void var_set_partA(sat_solver2 *s, int v, int partA)
#define Aig_ManForEachNode(p, pObj, i)
static Vec_Int_t * Vec_IntAlloc(int nCap)
FUNCTION DEFINITIONS ///.
Aig_Obj_t * Aig_IthVar(Aig_Man_t *p, int i)
FUNCTION DEFINITIONS ///.
static lit toLitCond(int v, int c)
static int Vec_IntEntry(Vec_Int_t *p, int i)
unsigned __int64 word
DECLARATIONS ///.
static int Aig_ManCiNum(Aig_Man_t *p)
#define ABC_NAMESPACE_IMPL_END
static void Aig_ManInterAddXor(sat_solver2 *pSat, int iVarA, int iVarB, int iVarC, int fCompl, int fMark)
static Aig_Obj_t * Aig_ObjChild1Copy(Aig_Obj_t *pObj)
static void Vec_IntPush(Vec_Int_t *p, int Entry)
static Aig_Obj_t * Aig_ObjChild0Copy(Aig_Obj_t *pObj)
void Cnf_DataLift(Cnf_Dat_t *p, int nVarsPlus)
static Aig_Obj_t * Aig_ManConst1(Aig_Man_t *p)
#define ABC_NAMESPACE_IMPL_START
static Aig_Obj_t * Aig_ManCo(Aig_Man_t *p, int i)
static int Aig_ManRegNum(Aig_Man_t *p)
static int Vec_IntSize(Vec_Int_t *p)
#define Aig_ManForEachObj(p, pObj, i)
void Aig_ManAppend(Aig_Man_t *pBase, Aig_Man_t *pNew)
static void clause2_set_partA(sat_solver2 *s, int h, int partA)
static ABC_NAMESPACE_IMPL_START void Aig_ManInterAddBuffer(sat_solver2 *pSat, int iVarA, int iVarB, int fCompl, int fMark)
DECLARATIONS ///.
void Cnf_DataFree(Cnf_Dat_t *p)
int sat_solver2_solve(sat_solver2 *s, lit *begin, lit *end, ABC_INT64_T nConfLimit, ABC_INT64_T nInsLimit, ABC_INT64_T nConfLimitGlobal, ABC_INT64_T nInsLimitGlobal)
static int Aig_ObjRefs(Aig_Obj_t *pObj)
static void Vec_IntFree(Vec_Int_t *p)
static int Aig_ObjIsCi(Aig_Obj_t *pObj)
static void Vec_IntClear(Vec_Int_t *p)
char * Abc_UtilStrsav(char *s)
void Aig_ManCleanData(Aig_Man_t *p)
static int Aig_ObjIsCo(Aig_Obj_t *pObj)