@@ -17,7 +17,7 @@ Author: Michael Tautschnig
1717
1818# include < cadical.hpp>
1919
20- tvt satcheck_cadicalt ::l_get (literalt a) const
20+ tvt satcheck_cadical_baset ::l_get (literalt a) const
2121{
2222 if (a.is_constant ())
2323 return tvt (a.sign ());
@@ -38,12 +38,12 @@ tvt satcheck_cadicalt::l_get(literalt a) const
3838 return result;
3939}
4040
41- std::string satcheck_cadicalt ::solver_text () const
41+ std::string satcheck_cadical_baset ::solver_text () const
4242{
4343 return std::string (" CaDiCaL " ) + solver->version ();
4444}
4545
46- void satcheck_cadicalt ::lcnf (const bvt &bv)
46+ void satcheck_cadical_baset ::lcnf (const bvt &bv)
4747{
4848 for (const auto &lit : bv)
4949 {
@@ -85,7 +85,7 @@ void satcheck_cadicalt::lcnf(const bvt &bv)
8585 clause_counter++;
8686}
8787
88- propt::resultt satcheck_cadicalt ::do_prop_solve (const bvt &assumptions)
88+ propt::resultt satcheck_cadical_baset ::do_prop_solve (const bvt &assumptions)
8989{
9090 INVARIANT (status != statust::ERROR, " there cannot be an error" );
9191
@@ -108,6 +108,12 @@ propt::resultt satcheck_cadicalt::do_prop_solve(const bvt &assumptions)
108108 if (!a.is_true ())
109109 solver->assume (a.dimacs ());
110110
111+ // set preprocessing and inprocessing limits
112+ auto limit1_ret = solver->limit (" preprocessing" , preprocessing_limit);
113+ CHECK_RETURN (limit1_ret);
114+ auto limit2_ret = solver->limit (" localsearch" , localsearch_limit);
115+ CHECK_RETURN (limit2_ret);
116+
111117 switch (solver->solve ())
112118 {
113119 case 10 :
@@ -128,24 +134,30 @@ propt::resultt satcheck_cadicalt::do_prop_solve(const bvt &assumptions)
128134 return resultt::P_UNSATISFIABLE;
129135}
130136
131- void satcheck_cadicalt ::set_assignment (literalt a, bool value)
137+ void satcheck_cadical_baset ::set_assignment (literalt a, bool value)
132138{
133139 INVARIANT (!a.is_constant (), " cannot set an assignment for a constant" );
134140 INVARIANT (false , " method not supported" );
135141}
136142
137- satcheck_cadicalt::satcheck_cadicalt (message_handlert &message_handler)
138- : cnf_solvert(message_handler), solver(new CaDiCaL::Solver())
143+ satcheck_cadical_baset::satcheck_cadical_baset (
144+ int _preprocessing_limit,
145+ int _localsearch_limit,
146+ message_handlert &message_handler)
147+ : cnf_solvert(message_handler),
148+ solver(new CaDiCaL::Solver()),
149+ preprocessing_limit(_preprocessing_limit),
150+ localsearch_limit(_localsearch_limit)
139151{
140152 solver->set (" quiet" , 1 );
141153}
142154
143- satcheck_cadicalt ::~satcheck_cadicalt ()
155+ satcheck_cadical_baset ::~satcheck_cadical_baset ()
144156{
145157 delete solver;
146158}
147159
148- bool satcheck_cadicalt ::is_in_conflict (literalt a) const
160+ bool satcheck_cadical_baset ::is_in_conflict (literalt a) const
149161{
150162 return solver->failed (a.dimacs ());
151163}
0 commit comments