summaryrefslogtreecommitdiffstats
path: root/src/proof/pdr/pdrCore.c
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2012-12-09 17:33:44 -0800
committerAlan Mishchenko <alanmi@berkeley.edu>2012-12-09 17:33:44 -0800
commitce63869fe7ebb0e22af4833454daea0c5977f32f (patch)
tree3f54e3de794394829c48eac43db28b350dbbea73 /src/proof/pdr/pdrCore.c
parent8761942258497dbd95f5ffca3eef1cf3d053f269 (diff)
downloadabc-ce63869fe7ebb0e22af4833454daea0c5977f32f.tar.gz
abc-ce63869fe7ebb0e22af4833454daea0c5977f32f.tar.bz2
abc-ce63869fe7ebb0e22af4833454daea0c5977f32f.zip
Enabling multi-output solving in 'pdr'.
Diffstat (limited to 'src/proof/pdr/pdrCore.c')
-rw-r--r--src/proof/pdr/pdrCore.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/proof/pdr/pdrCore.c b/src/proof/pdr/pdrCore.c
index 85ad580e..46288925 100644
--- a/src/proof/pdr/pdrCore.c
+++ b/src/proof/pdr/pdrCore.c
@@ -590,7 +590,7 @@ int Pdr_ManSolveInt( Pdr_Man_t * p )
if ( p->pPars->nFailOuts == Saig_ManPoNum(p->pAig) )
return 0; // all SAT
continue;
- }
+ }
// try to solve this output
while ( 1 )
{
@@ -624,6 +624,7 @@ int Pdr_ManSolveInt( Pdr_Man_t * p )
}
if ( RetValue == 0 )
{
+ Abc_Cex_t * pCex;
if ( fPrintClauses )
{
Abc_Print( 1, "*** Clauses after frame %d:\n", k );
@@ -639,12 +640,13 @@ int Pdr_ManSolveInt( Pdr_Man_t * p )
return 0; // SAT
}
p->pPars->nFailOuts++;
- Abc_Print( 1, "Output %*d was asserted in frame %2d (solved %*d out of %*d outputs).\n",
- nOutDigits, p->iOutCur, k, nOutDigits, p->pPars->nFailOuts, nOutDigits, Saig_ManPoNum(p->pAig) );
if ( p->vCexes == NULL )
p->vCexes = Vec_PtrStart( Saig_ManPoNum(p->pAig) );
assert( Vec_PtrEntry(p->vCexes, p->iOutCur) == NULL );
- Vec_PtrWriteEntry( p->vCexes, p->iOutCur, Pdr_ManDeriveCex(p) );
+ pCex = Pdr_ManDeriveCex(p);
+ Vec_PtrWriteEntry( p->vCexes, p->iOutCur, pCex );
+ Abc_Print( 1, "Output %*d was asserted in frame %2d (%2d) (solved %*d out of %*d outputs).\n",
+ nOutDigits, p->iOutCur, pCex->iFrame, k, nOutDigits, p->pPars->nFailOuts, nOutDigits, Saig_ManPoNum(p->pAig) );
if ( p->pPars->nFailOuts == Saig_ManPoNum(p->pAig) )
return 0; // all SAT
Pdr_QueueClean( p );