From 4f0f2e09f84b66c1ed9a842a71a09f2f1ec65588 Mon Sep 17 00:00:00 2001 From: Alan Mishchenko Date: Wed, 28 Sep 2016 16:27:39 -0700 Subject: Adding flag 'pdr -e' to output only support variables in the invariant. --- src/base/abci/abc.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src/base') diff --git a/src/base/abci/abc.c b/src/base/abci/abc.c index 151d05c9..40598a89 100644 --- a/src/base/abci/abc.c +++ b/src/base/abci/abc.c @@ -25788,7 +25788,7 @@ int Abc_CommandPdr( Abc_Frame_t * pAbc, int argc, char ** argv ) int c; Pdr_ManSetDefaultParams( pPars ); Extra_UtilGetoptReset(); - while ( ( c = Extra_UtilGetopt( argc, argv, "MFCDRTHGaxrmsipdgovwzh" ) ) != EOF ) + while ( ( c = Extra_UtilGetopt( argc, argv, "MFCDRTHGaxrmsipdegovwzh" ) ) != EOF ) { switch ( c ) { @@ -25904,6 +25904,9 @@ int Abc_CommandPdr( Abc_Frame_t * pAbc, int argc, char ** argv ) case 'd': pPars->fDumpInv ^= 1; break; + case 'e': + pPars->fUseSupp ^= 1; + break; case 'g': pPars->fSkipGeneral ^= 1; break; @@ -25951,7 +25954,7 @@ int Abc_CommandPdr( Abc_Frame_t * pAbc, int argc, char ** argv ) return 0; usage: - Abc_Print( -2, "usage: pdr [-MFCDRTHG ] [-axrmsipdgovwzh]\n" ); + Abc_Print( -2, "usage: pdr [-MFCDRTHG ] [-axrmsipdegovwzh]\n" ); Abc_Print( -2, "\t model checking using property directed reachability (aka IC3)\n" ); Abc_Print( -2, "\t pioneered by Aaron Bradley (http://ecee.colorado.edu/~bradleya/ic3/)\n" ); Abc_Print( -2, "\t with improvements by Niklas Een (http://een.se/niklas/)\n" ); @@ -25971,6 +25974,7 @@ usage: Abc_Print( -2, "\t-i : toggle clause pushing from an intermediate timeframe [default = %s]\n", pPars->fShiftStart? "yes": "no" ); Abc_Print( -2, "\t-p : toggle reusing proof-obligations in the last timeframe [default = %s]\n", pPars->fReuseProofOblig? "yes": "no" ); Abc_Print( -2, "\t-d : toggle dumping invariant (valid if init state is all-0) [default = %s]\n", pPars->fDumpInv? "yes": "no" ); + Abc_Print( -2, "\t-e : toggle using only support variables in the invariant [default = %s]\n", pPars->fUseSupp? "yes": "no" ); Abc_Print( -2, "\t-g : toggle skipping expensive generalization step [default = %s]\n", pPars->fSkipGeneral? "yes": "no" ); Abc_Print( -2, "\t-o : toggle using property output as inductive hypothesis [default = %s]\n", pPars->fUsePropOut? "yes": "no" ); Abc_Print( -2, "\t-v : toggle printing optimization summary [default = %s]\n", pPars->fVerbose? "yes": "no" ); -- cgit v1.2.3 From 9a35f82d5fd396f04a0baaa50b390281c4673172 Mon Sep 17 00:00:00 2001 From: Alan Mishchenko Date: Thu, 29 Sep 2016 18:00:52 -0700 Subject: Supporting 'define-fun' with an expression rather than a constant. --- src/base/wlc/wlcReadSmt.c | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) (limited to 'src/base') diff --git a/src/base/wlc/wlcReadSmt.c b/src/base/wlc/wlcReadSmt.c index fcd47274..580401df 100644 --- a/src/base/wlc/wlcReadSmt.c +++ b/src/base/wlc/wlcReadSmt.c @@ -981,12 +981,25 @@ Wlc_Ntk_t * Smt_PrsBuild2( Smt_Prs_t * p ) assert( !strcmp("Bool", Smt_VecEntryName(p, vFans, 3)) ); Range = 1; pValue = Smt_VecEntryName(p, vFans, 4); - if ( !strcmp("false", pValue) ) - pValue = "#b0"; - else if ( !strcmp("true", pValue) ) - pValue = "#b1"; - else assert( 0 ); - Status = Smt_PrsBuildConstant( pNtk, pValue, Range, pName ); + if ( pValue != NULL ) + { + if ( !strcmp("false", pValue) ) + pValue = "#b0"; + else if ( !strcmp("true", pValue) ) + pValue = "#b1"; + else assert( 0 ); + Status = Smt_PrsBuildConstant( pNtk, pValue, Range, pName ); + } + else + { + iObj = Smt_PrsBuild2_rec( pNtk, p, Vec_IntEntry(vFans, 4), -1, pName ); + if ( iObj == 0 ) + { + Wlc_NtkFree( pNtk ); pNtk = NULL; + goto finish; + } + continue; + } } else { -- cgit v1.2.3