summaryrefslogtreecommitdiffstats
path: root/src/proof/pdr
diff options
context:
space:
mode:
authorYen-Sheng Ho <ysho@berkeley.edu>2017-02-19 19:57:44 -0800
committerYen-Sheng Ho <ysho@berkeley.edu>2017-02-19 19:57:44 -0800
commit25ecc3d42973cd832d78b00cbed188171892325d (patch)
treeb14e6c5801e031c798af0bf6a5c34d430d796a19 /src/proof/pdr
parent1a66a5823a37123c099e63cb94bba1fd844487d1 (diff)
downloadabc-25ecc3d42973cd832d78b00cbed188171892325d.tar.gz
abc-25ecc3d42973cd832d78b00cbed188171892325d.tar.bz2
abc-25ecc3d42973cd832d78b00cbed188171892325d.zip
fixed a tricky bug: property should not be assumed true in the last frame
Diffstat (limited to 'src/proof/pdr')
-rw-r--r--src/proof/pdr/pdrIncr.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/proof/pdr/pdrIncr.c b/src/proof/pdr/pdrIncr.c
index 9f7dfd90..09a06a27 100644
--- a/src/proof/pdr/pdrIncr.c
+++ b/src/proof/pdr/pdrIncr.c
@@ -99,7 +99,6 @@ int IPdr_ManCheckClauses( Pdr_Man_t * p )
assert( RetValue == 1 );
}
}
- printf( "XXX: Pass check clauses! %d frames and %d clauses checked\n", k, counter );
return 1;
}
@@ -149,7 +148,7 @@ Vec_Vec_t * IPdr_ManSaveClauses( Pdr_Man_t * p, int fDropLast )
SeeAlso []
***********************************************************************/
-sat_solver * IPdr_ManSetSolver( Pdr_Man_t * p, int k )
+sat_solver * IPdr_ManSetSolver( Pdr_Man_t * p, int k, int nTotal )
{
sat_solver * pSat;
Vec_Ptr_t * vArrayK;
@@ -165,7 +164,12 @@ sat_solver * IPdr_ManSetSolver( Pdr_Man_t * p, int k )
Vec_IntPush( p->vActVars, 0 );
// set the property output
- Pdr_ManSetPropertyOutput( p, k );
+ if ( k < nTotal - 1 )
+ Pdr_ManSetPropertyOutput( p, k );
+
+ if (k == 0)
+ return pSat;
+
// add the clauses
Vec_VecForEachLevelStart( p->vClauses, vArrayK, i, k )
Vec_PtrForEachEntry( Pdr_Set_t *, vArrayK, pCube, j )
@@ -194,7 +198,7 @@ int IPdr_ManRestore( Pdr_Man_t * p, Vec_Vec_t * vClauses )
p->vClauses = vClauses;
for ( i = 0; i < Vec_VecSize(p->vClauses); ++i )
- IPdr_ManSetSolver(p, i);
+ IPdr_ManSetSolver( p, i, Vec_VecSize( p->vClauses ) );
return 0;
}