Commit 69523114 by Alan Mishchenko

Specialized induction check.

parent 313caa45
...@@ -170,6 +170,8 @@ void Bmc_PerformICheck( Gia_Man_t * p, int nFramesMax, int nTimeOut, int fVerbos ...@@ -170,6 +170,8 @@ void Bmc_PerformICheck( Gia_Man_t * p, int nFramesMax, int nTimeOut, int fVerbos
{ {
iVar0 = pCnf->pVarNums[Gia_ObjId(pMiter, pObj)]; iVar0 = pCnf->pVarNums[Gia_ObjId(pMiter, pObj)];
iVar1 = Vec_IntEntry( vLits, i ); iVar1 = Vec_IntEntry( vLits, i );
if ( iVar1 == -1 )
continue;
sat_solver_add_buffer( pSat, iVar0, iVar1, 0 ); sat_solver_add_buffer( pSat, iVar0, iVar1, 0 );
} }
// add equality clauses for the COs // add equality clauses for the COs
...@@ -204,6 +206,7 @@ void Bmc_PerformICheck( Gia_Man_t * p, int nFramesMax, int nTimeOut, int fVerbos ...@@ -204,6 +206,7 @@ void Bmc_PerformICheck( Gia_Man_t * p, int nFramesMax, int nTimeOut, int fVerbos
sat_solver_compress( pSat ); sat_solver_compress( pSat );
while ( 1 ) while ( 1 )
{ {
// sat_solver_bookmark( pSat );
status = sat_solver_solve( pSat, Vec_IntArray(vLits), Vec_IntArray(vLits) + Vec_IntSize(vLits), (ABC_INT64_T)0, (ABC_INT64_T)0, (ABC_INT64_T)0, (ABC_INT64_T)0 ); status = sat_solver_solve( pSat, Vec_IntArray(vLits), Vec_IntArray(vLits) + Vec_IntSize(vLits), (ABC_INT64_T)0, (ABC_INT64_T)0, (ABC_INT64_T)0, (ABC_INT64_T)0 );
if ( status == l_Undef ) if ( status == l_Undef )
{ {
...@@ -226,6 +229,7 @@ void Bmc_PerformICheck( Gia_Man_t * p, int nFramesMax, int nTimeOut, int fVerbos ...@@ -226,6 +229,7 @@ void Bmc_PerformICheck( Gia_Man_t * p, int nFramesMax, int nTimeOut, int fVerbos
if ( nLits == Vec_IntSize(vLits) ) if ( nLits == Vec_IntSize(vLits) )
break; break;
break; break;
// sat_solver_rollback( pSat );
// add another large OR clause // add another large OR clause
Vec_IntClear( vLits ); Vec_IntClear( vLits );
...@@ -235,7 +239,7 @@ void Bmc_PerformICheck( Gia_Man_t * p, int nFramesMax, int nTimeOut, int fVerbos ...@@ -235,7 +239,7 @@ void Bmc_PerformICheck( Gia_Man_t * p, int nFramesMax, int nTimeOut, int fVerbos
// create new literals // create new literals
Vec_IntClear( vLits ); Vec_IntClear( vLits );
for ( i = 0; i < nLits; i++ ) for ( i = 0; i < nLits; i++ )
Vec_IntPush( vLits, pLits[i] ); Vec_IntPush( vLits, Abc_LitNot(pLits[i]) );
} }
sat_solver_delete( pSat ); sat_solver_delete( pSat );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment