diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/base/abci/abc.c | 4 | ||||
| -rw-r--r-- | src/sat/glucose/AbcGlucose.cpp | 60 | ||||
| -rw-r--r-- | src/sat/glucose/SimpSolver.h | 3 | 
3 files changed, 34 insertions, 33 deletions
diff --git a/src/base/abci/abc.c b/src/base/abci/abc.c index a7688741..791bad1e 100644 --- a/src/base/abci/abc.c +++ b/src/base/abci/abc.c @@ -40124,7 +40124,7 @@ int Abc_CommandAbc9SBmc( Abc_Frame_t * pAbc, int argc, char ** argv )      return 0;  usage: -    Abc_Print( -2, "usage: &bmcs [-PCFAT num] [-gvwh]\n" ); +    Abc_Print( -2, "usage: &bmcs [-PCFAT num] [-gevwh]\n" );      Abc_Print( -2, "\t         performs bounded model checking\n" );      Abc_Print( -2, "\t-P num : the number of parallel solvers [default = %d]\n",              pPars->nProcs );      Abc_Print( -2, "\t-C num : the SAT solver conflict limit [default = %d]\n",               pPars->nConfLimit ); @@ -40132,7 +40132,7 @@ usage:      Abc_Print( -2, "\t-A num : the number of additional frames to unroll [default = %d]\n",   pPars->nFramesAdd );      Abc_Print( -2, "\t-T num : approximate timeout in seconds [default = %d]\n",              pPars->nTimeOut );      Abc_Print( -2, "\t-g     : toggle using Glucose 3.0 [default = %s]\n",                    pPars->fUseGlucose?  "Glucose" : "Satoko" ); -//    Abc_Print( -2, "\t-e     : toggle using variable eliminatation [default = %s]\n",         pPars->fUseEliminate?"yes": "no" ); +    Abc_Print( -2, "\t-e     : toggle using variable eliminatation [default = %s]\n",         pPars->fUseEliminate?"yes": "no" );      Abc_Print( -2, "\t-v     : toggle printing verbose information [default = %s]\n",         pPars->fVerbose?     "yes": "no" );      Abc_Print( -2, "\t-w     : toggle printing information about unfolding [default = %s]\n", pPars->fVeryVerbose? "yes": "no" );      Abc_Print( -2, "\t-h     : print the command usage\n"); diff --git a/src/sat/glucose/AbcGlucose.cpp b/src/sat/glucose/AbcGlucose.cpp index 8d8868ce..5f3a321e 100644 --- a/src/sat/glucose/AbcGlucose.cpp +++ b/src/sat/glucose/AbcGlucose.cpp @@ -54,19 +54,19 @@ extern "C" {    SeeAlso     []  ***********************************************************************/ -Gluco::Solver * glucose_solver_start() +Gluco::SimpSolver * glucose_solver_start()  { -    Solver * S = new Solver; +    SimpSolver * S = new SimpSolver;      S->setIncrementalMode();      return S;  } -void glucose_solver_stop(Gluco::Solver* S) +void glucose_solver_stop(Gluco::SimpSolver* S)  {      delete S;  } -int glucose_solver_addclause(Gluco::Solver* S, int * plits, int nlits) +int glucose_solver_addclause(Gluco::SimpSolver* S, int * plits, int nlits)  {      vec<Lit> lits;      for ( int i = 0; i < nlits; i++,plits++) @@ -81,14 +81,14 @@ int glucose_solver_addclause(Gluco::Solver* S, int * plits, int nlits)      return S->addClause(lits); // returns 0 if the problem is UNSAT  } -void glucose_solver_setcallback(Gluco::Solver* S, void * pman, int(*pfunc)(void*, int, int*)) +void glucose_solver_setcallback(Gluco::SimpSolver* S, void * pman, int(*pfunc)(void*, int, int*))  {      S->pCnfMan = pman;      S->pCnfFunc = pfunc;      S->nCallConfl = 1000;  } -int glucose_solver_solve(Gluco::Solver* S, int * plits, int nlits) +int glucose_solver_solve(Gluco::SimpSolver* S, int * plits, int nlits)  {      vec<Lit> lits;      for (int i=0;i<nlits;i++,plits++) @@ -97,22 +97,22 @@ int glucose_solver_solve(Gluco::Solver* S, int * plits, int nlits)          p.x = *plits;          lits.push(p);      } -    Gluco::lbool res = S->solveLimited(lits); +    Gluco::lbool res = S->solveLimited(lits, 0);      return (res == l_True ? 1 : res == l_False ? -1 : 0);  } -int glucose_solver_addvar(Gluco::Solver* S) +int glucose_solver_addvar(Gluco::SimpSolver* S)  {      S->newVar();      return S->nVars() - 1;  } -int glucose_solver_read_cex_varvalue(Gluco::Solver* S, int ivar) +int glucose_solver_read_cex_varvalue(Gluco::SimpSolver* S, int ivar)  {      return S->model[ivar] == l_True;  } -void glucose_solver_setstop(Gluco::Solver* S, int * pstop) +void glucose_solver_setstop(Gluco::SimpSolver* S, int * pstop)  {      S->pstop = pstop;  } @@ -155,33 +155,33 @@ bmcg_sat_solver * bmcg_sat_solver_start()  }  void bmcg_sat_solver_stop(bmcg_sat_solver* s)  { -    glucose_solver_stop((Gluco::Solver*)s); +    glucose_solver_stop((Gluco::SimpSolver*)s);  }  int bmcg_sat_solver_addclause(bmcg_sat_solver* s, int * plits, int nlits)  { -    return glucose_solver_addclause((Gluco::Solver*)s,plits,nlits); +    return glucose_solver_addclause((Gluco::SimpSolver*)s,plits,nlits);  }  void bmcg_sat_solver_setcallback(bmcg_sat_solver* s, void * pman, int(*pfunc)(void*, int, int*))  { -    glucose_solver_setcallback((Gluco::Solver*)s,pman,pfunc); +    glucose_solver_setcallback((Gluco::SimpSolver*)s,pman,pfunc);  }  int bmcg_sat_solver_solve(bmcg_sat_solver* s, int * plits, int nlits)  { -    return glucose_solver_solve((Gluco::Solver*)s,plits,nlits); +    return glucose_solver_solve((Gluco::SimpSolver*)s,plits,nlits);  }  int bmcg_sat_solver_final(bmcg_sat_solver* s, int ** ppArray)  { -    *ppArray = (int *)(Lit *)((Gluco::Solver*)s)->conflict; -    return ((Gluco::Solver*)s)->conflict.size(); +    *ppArray = (int *)(Lit *)((Gluco::SimpSolver*)s)->conflict; +    return ((Gluco::SimpSolver*)s)->conflict.size();  }  int bmcg_sat_solver_addvar(bmcg_sat_solver* s)  { -    return glucose_solver_addvar((Gluco::Solver*)s); +    return glucose_solver_addvar((Gluco::SimpSolver*)s);  }  void bmcg_sat_solver_set_nvars( bmcg_sat_solver* s, int nvars ) @@ -193,61 +193,61 @@ void bmcg_sat_solver_set_nvars( bmcg_sat_solver* s, int nvars )  int bmcg_sat_solver_eliminate( bmcg_sat_solver* s, int turn_off_elim )  { -    return 1;  +//    return 1;       return ((Gluco::SimpSolver*)s)->eliminate(turn_off_elim != 0);  }  int bmcg_sat_solver_var_is_elim( bmcg_sat_solver* s, int v )  { -    return 0;  +//    return 0;       return ((Gluco::SimpSolver*)s)->isEliminated(v);  }  int bmcg_sat_solver_read_cex_varvalue(bmcg_sat_solver* s, int ivar)  { -    return glucose_solver_read_cex_varvalue((Gluco::Solver*)s, ivar); +    return glucose_solver_read_cex_varvalue((Gluco::SimpSolver*)s, ivar);  }  void bmcg_sat_solver_set_stop(bmcg_sat_solver* s, int * pstop)  { -    glucose_solver_setstop((Gluco::Solver*)s, pstop); +    glucose_solver_setstop((Gluco::SimpSolver*)s, pstop);  }  abctime bmcg_sat_solver_set_runtime_limit(bmcg_sat_solver* s, abctime Limit)  { -    abctime nRuntimeLimit = ((Gluco::Solver*)s)->nRuntimeLimit; -    ((Gluco::Solver*)s)->nRuntimeLimit = Limit; +    abctime nRuntimeLimit = ((Gluco::SimpSolver*)s)->nRuntimeLimit; +    ((Gluco::SimpSolver*)s)->nRuntimeLimit = Limit;      return nRuntimeLimit;  }  void bmcg_sat_solver_set_conflict_budget(bmcg_sat_solver* s, int Limit)  {      if ( Limit > 0 )  -        ((Gluco::Solver*)s)->setConfBudget( (int64_t)Limit ); +        ((Gluco::SimpSolver*)s)->setConfBudget( (int64_t)Limit );      else  -        ((Gluco::Solver*)s)->budgetOff(); +        ((Gluco::SimpSolver*)s)->budgetOff();  }  int bmcg_sat_solver_varnum(bmcg_sat_solver* s)  { -    return ((Gluco::Solver*)s)->nVars(); +    return ((Gluco::SimpSolver*)s)->nVars();  }  int bmcg_sat_solver_clausenum(bmcg_sat_solver* s)  { -    return ((Gluco::Solver*)s)->nClauses(); +    return ((Gluco::SimpSolver*)s)->nClauses();  }  int bmcg_sat_solver_learntnum(bmcg_sat_solver* s)  { -    return ((Gluco::Solver*)s)->nLearnts(); +    return ((Gluco::SimpSolver*)s)->nLearnts();  }  int bmcg_sat_solver_conflictnum(bmcg_sat_solver* s)  { -    return ((Gluco::Solver*)s)->conflicts; +    return ((Gluco::SimpSolver*)s)->conflicts;  }  int bmcg_sat_solver_minimize_assumptions(bmcg_sat_solver * s, int * plits, int nlits)  { -    vec<int>*array = &((Gluco::Solver*)s)->user_vec; +    vec<int>*array = &((Gluco::SimpSolver*)s)->user_vec;      int i, nlitsL, nlitsR, nresL, nresR, status;      if ( nlits == 1 )      { diff --git a/src/sat/glucose/SimpSolver.h b/src/sat/glucose/SimpSolver.h index 0f619b19..8daf99d1 100644 --- a/src/sat/glucose/SimpSolver.h +++ b/src/sat/glucose/SimpSolver.h @@ -167,7 +167,8 @@ class SimpSolver : public Solver {  // Implementation of inline methods: -inline bool SimpSolver::isEliminated (Var v) const { return eliminated.size() ? eliminated[v] != 0 : 0; } +//inline bool SimpSolver::isEliminated (Var v) const { return eliminated[v]; } +inline bool SimpSolver::isEliminated (Var v) const { return eliminated.size() > 0 ? eliminated[v] != 0 : 0; }  inline void SimpSolver::updateElimHeap(Var v) {      assert(use_simplification);      // if (!frozen[v] && !isEliminated(v) && value(v) == l_Undef)  | 
