diff options
author | Alan Mishchenko <alanmi@berkeley.edu> | 2015-11-23 23:42:20 +0700 |
---|---|---|
committer | Alan Mishchenko <alanmi@berkeley.edu> | 2015-11-23 23:42:20 +0700 |
commit | 56880eab5294d8a13e012eeca1e68255f0bf0e68 (patch) | |
tree | 8dc6f8948253493ae7f4d6f46e8b3b2d6c164969 /src/proof | |
parent | 63fcf25aead4055e260201a1820a190e8f2fbfab (diff) | |
download | abc-56880eab5294d8a13e012eeca1e68255f0bf0e68.tar.gz abc-56880eab5294d8a13e012eeca1e68255f0bf0e68.tar.bz2 abc-56880eab5294d8a13e012eeca1e68255f0bf0e68.zip |
New command %psinv.
Diffstat (limited to 'src/proof')
-rw-r--r-- | src/proof/pdr/pdrCore.c | 5 | ||||
-rw-r--r-- | src/proof/pdr/pdrInt.h | 1 | ||||
-rw-r--r-- | src/proof/pdr/pdrInv.c | 20 |
3 files changed, 26 insertions, 0 deletions
diff --git a/src/proof/pdr/pdrCore.c b/src/proof/pdr/pdrCore.c index 20db8f67..78cc16c1 100644 --- a/src/proof/pdr/pdrCore.c +++ b/src/proof/pdr/pdrCore.c @@ -19,6 +19,7 @@ ***********************************************************************/ #include "pdrInt.h" +#include "base/main/main.h" ABC_NAMESPACE_IMPL_START @@ -910,6 +911,10 @@ int Pdr_ManSolve( Aig_Man_t * pAig, Pdr_Par_t * pPars ) RetValue = Pdr_ManSolveInt( p ); if ( RetValue == 0 ) assert( pAig->pSeqModel != NULL || p->vCexes != NULL ); + if ( RetValue == 1 ) + Abc_FrameSetInv( Pdr_ManCountFlopsInv(p) ); + else + Abc_FrameSetInv( NULL ); if ( p->vCexes ) { assert( p->pAig->vSeqModelVec == NULL ); diff --git a/src/proof/pdr/pdrInt.h b/src/proof/pdr/pdrInt.h index 0eb6bd81..bd9fe87c 100644 --- a/src/proof/pdr/pdrInt.h +++ b/src/proof/pdr/pdrInt.h @@ -163,6 +163,7 @@ extern sat_solver * Pdr_ManNewSolver( sat_solver * pSat, Pdr_Man_t * p, int k /*=== pdrCore.c ==========================================================*/ extern int Pdr_ManCheckContainment( Pdr_Man_t * p, int k, Pdr_Set_t * pSet ); /*=== pdrInv.c ==========================================================*/ +extern Vec_Int_t * Pdr_ManCountFlopsInv( Pdr_Man_t * p ); extern void Pdr_ManPrintProgress( Pdr_Man_t * p, int fClose, abctime Time ); extern void Pdr_ManPrintClauses( Pdr_Man_t * p, int kStart ); extern void Pdr_ManDumpClauses( Pdr_Man_t * p, char * pFileName, int fProved ); diff --git a/src/proof/pdr/pdrInv.c b/src/proof/pdr/pdrInv.c index eef24b83..860462c3 100644 --- a/src/proof/pdr/pdrInv.c +++ b/src/proof/pdr/pdrInv.c @@ -168,6 +168,26 @@ Vec_Ptr_t * Pdr_ManCollectCubes( Pdr_Man_t * p, int kStart ) /**Function************************************************************* + Synopsis [] + + Description [] + + SideEffects [] + + SeeAlso [] + +***********************************************************************/ +Vec_Int_t * Pdr_ManCountFlopsInv( Pdr_Man_t * p ) +{ + int kStart = Pdr_ManFindInvariantStart(p); + Vec_Ptr_t *vCubes = Pdr_ManCollectCubes(p, kStart); + Vec_Int_t * vInv = Pdr_ManCountFlops( p, vCubes ); + Vec_PtrFree(vCubes); + return vInv; +} + +/**Function************************************************************* + Synopsis [Counts the number of variables used in the clauses.] Description [] |