more APIs in cadical

This commit is contained in:
MyskYko 2025-06-20 15:55:31 -07:00
parent 6e130c15a3
commit 5e03f9fefa
6 changed files with 56 additions and 0 deletions

View File

@ -982,6 +982,10 @@ public:
// //
static void build (FILE *file, const char *prefix = "c "); static void build (FILE *file, const char *prefix = "c ");
// Extra APIs
int clauses ();
int conflicts ();
private: private:
//==== start of state ==================================================== //==== start of state ====================================================

View File

@ -261,6 +261,36 @@ int cadical_solver_get_var_value(cadical_solver* s, int v) {
return ccadical_val((CCaDiCaL*)s->p, v + 1) > 0; return ccadical_val((CCaDiCaL*)s->p, v + 1) > 0;
} }
/**Function*************************************************************
Synopsis [get number of clauses]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
int cadical_solver_nclauses(cadical_solver* s) {
return ccadical_clauses((CCaDiCaL*)s->p);
}
/**Function*************************************************************
Synopsis [get number of conflicts]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
int cadical_solver_nconflicts(cadical_solver* s) {
return ccadical_conflicts((CCaDiCaL*)s->p);
}
/**Function************************************************************* /**Function*************************************************************

View File

@ -65,6 +65,8 @@ extern int cadical_solver_nvars(cadical_solver* s);
extern int cadical_solver_addvar(cadical_solver* s); extern int cadical_solver_addvar(cadical_solver* s);
extern void cadical_solver_setnvars(cadical_solver* s,int n); extern void cadical_solver_setnvars(cadical_solver* s,int n);
extern int cadical_solver_get_var_value(cadical_solver* s, int v); extern int cadical_solver_get_var_value(cadical_solver* s, int v);
extern int cadical_solver_nclauses(cadical_solver* s);
extern int cadical_solver_nconflicts(cadical_solver* s);
extern Vec_Int_t * cadical_solve_cnf( Cnf_Dat_t * pCnf, char * pArgs, int nConfs, int nTimeLimit, int fSat, int fUnsat, int fPrintCex, int fVerbose ); extern Vec_Int_t * cadical_solve_cnf( Cnf_Dat_t * pCnf, char * pArgs, int nConfs, int nTimeLimit, int fSat, int fUnsat, int fPrintCex, int fVerbose );
ABC_NAMESPACE_HEADER_END ABC_NAMESPACE_HEADER_END

View File

@ -208,4 +208,12 @@ int ccadical_is_inconsistent(CCaDiCaL *ptr) {
return ((Wrapper *) ptr)->solver->inconsistent (); return ((Wrapper *) ptr)->solver->inconsistent ();
} }
int ccadical_clauses(CCaDiCaL *ptr) {
return ((Wrapper *) ptr)->solver->clauses ();
}
int ccadical_conflicts(CCaDiCaL *ptr) {
return ((Wrapper *) ptr)->solver->conflicts ();
}
ABC_NAMESPACE_IMPL_END ABC_NAMESPACE_IMPL_END

View File

@ -1759,6 +1759,16 @@ void Solver::error (const char *fmt, ...) {
va_end (ap); va_end (ap);
} }
/*------------------------------------------------------------------------*/
int Solver::clauses () {
return internal->stats.added.total;
}
int Solver::conflicts () {
return internal->stats.conflicts;
}
} // namespace CaDiCaL } // namespace CaDiCaL
ABC_NAMESPACE_IMPL_END ABC_NAMESPACE_IMPL_END

View File

@ -58,6 +58,8 @@ int ccadical_reserve_difference (CCaDiCaL *, int number_of_vars);
void ccadical_reserve(CCaDiCaL *, int min_max_var); void ccadical_reserve(CCaDiCaL *, int min_max_var);
int ccadical_is_inconsistent(CCaDiCaL *); int ccadical_is_inconsistent(CCaDiCaL *);
int ccadical_clauses(CCaDiCaL *);
int ccadical_conflicts(CCaDiCaL *);
/*------------------------------------------------------------------------*/ /*------------------------------------------------------------------------*/