diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/proof/pdr/pdrCore.c | 14 | ||||
-rw-r--r-- | src/proof/pdr/pdrInv.c | 2 | ||||
-rw-r--r-- | src/proof/pdr/pdrSat.c | 3 |
3 files changed, 15 insertions, 4 deletions
diff --git a/src/proof/pdr/pdrCore.c b/src/proof/pdr/pdrCore.c index 27426a60..5294e020 100644 --- a/src/proof/pdr/pdrCore.c +++ b/src/proof/pdr/pdrCore.c @@ -491,8 +491,16 @@ int Pdr_ManBlockCube( Pdr_Man_t * p, Pdr_Set_t * pCube ) // check other frames assert( pPred == NULL ); for ( k = pThis->iFrame; k < kMax; k++ ) - if ( !Pdr_ManCheckCube( p, k, pCubeMin, NULL, 0 ) ) + { + RetValue = Pdr_ManCheckCube( p, k, pCubeMin, NULL, 0 ); + if ( RetValue == -1 ) + { + Pdr_OblDeref( pThis ); + return -1; + } + if ( !RetValue ) break; + } // add new clause if ( p->pPars->fVeryVerbose ) @@ -740,8 +748,8 @@ int Pdr_ManSolveInt( Pdr_Man_t * p ) p->pPars->nDropOuts++; if ( p->pPars->vOutMap ) Vec_IntWriteEntry( p->pPars->vOutMap, p->iOutCur, -1 ); - if ( p->pPars->fVerbose ) - printf( "Timing out on output %d.\n", p->iOutCur ); + if ( !p->pPars->fNotVerbose ) + Abc_Print( 1, "Timing out on output %*d.\n", nOutDigits, p->iOutCur ); } p->timeToStopOne = 0; } diff --git a/src/proof/pdr/pdrInv.c b/src/proof/pdr/pdrInv.c index b1bff676..45bc3c35 100644 --- a/src/proof/pdr/pdrInv.c +++ b/src/proof/pdr/pdrInv.c @@ -336,7 +336,7 @@ void Pdr_ManVerifyInvariant( Pdr_Man_t * p ) kThis = Vec_PtrSize(p->vSolvers); pSat = Pdr_ManCreateSolver( p, kThis ); // add the property output - Pdr_ManSetPropertyOutput( p, kThis ); +// Pdr_ManSetPropertyOutput( p, kThis ); // add the clauses Vec_PtrForEachEntry( Pdr_Set_t *, vCubes, pCube, i ) { diff --git a/src/proof/pdr/pdrSat.c b/src/proof/pdr/pdrSat.c index 31c05ce6..244d0311 100644 --- a/src/proof/pdr/pdrSat.c +++ b/src/proof/pdr/pdrSat.c @@ -185,6 +185,9 @@ void Pdr_ManSetPropertyOutput( Pdr_Man_t * p, int k ) // skip solved outputs if ( p->vCexes && Vec_PtrEntry(p->vCexes, i) ) continue; + // skip timedout outputs + if ( p->pPars->vOutMap && Vec_IntEntry(p->pPars->vOutMap, i) == -1 ) + continue; Lit = toLitCond( Pdr_ObjSatVar(p, k, 1, pObj), 1 ); // neg literal RetValue = sat_solver_addclause( pSat, &Lit, &Lit + 1 ); assert( RetValue == 1 ); |