@@ -17,7 +17,7 @@ Author: Michael Tautschnig
17
17
18
18
# include < cadical.hpp>
19
19
20
- tvt satcheck_cadicalt ::l_get (literalt a) const
20
+ tvt satcheck_cadical_baset ::l_get (literalt a) const
21
21
{
22
22
if (a.is_constant ())
23
23
return tvt (a.sign ());
@@ -38,12 +38,12 @@ tvt satcheck_cadicalt::l_get(literalt a) const
38
38
return result;
39
39
}
40
40
41
- std::string satcheck_cadicalt ::solver_text () const
41
+ std::string satcheck_cadical_baset ::solver_text () const
42
42
{
43
43
return std::string (" CaDiCaL " ) + solver->version ();
44
44
}
45
45
46
- void satcheck_cadicalt ::lcnf (const bvt &bv)
46
+ void satcheck_cadical_baset ::lcnf (const bvt &bv)
47
47
{
48
48
for (const auto &lit : bv)
49
49
{
@@ -85,7 +85,7 @@ void satcheck_cadicalt::lcnf(const bvt &bv)
85
85
clause_counter++;
86
86
}
87
87
88
- propt::resultt satcheck_cadicalt ::do_prop_solve (const bvt &assumptions)
88
+ propt::resultt satcheck_cadical_baset ::do_prop_solve (const bvt &assumptions)
89
89
{
90
90
INVARIANT (status != statust::ERROR, " there cannot be an error" );
91
91
@@ -108,6 +108,12 @@ propt::resultt satcheck_cadicalt::do_prop_solve(const bvt &assumptions)
108
108
if (!a.is_true ())
109
109
solver->assume (a.dimacs ());
110
110
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
+
111
117
switch (solver->solve ())
112
118
{
113
119
case 10 :
@@ -128,24 +134,30 @@ propt::resultt satcheck_cadicalt::do_prop_solve(const bvt &assumptions)
128
134
return resultt::P_UNSATISFIABLE;
129
135
}
130
136
131
- void satcheck_cadicalt ::set_assignment (literalt a, bool value)
137
+ void satcheck_cadical_baset ::set_assignment (literalt a, bool value)
132
138
{
133
139
INVARIANT (!a.is_constant (), " cannot set an assignment for a constant" );
134
140
INVARIANT (false , " method not supported" );
135
141
}
136
142
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)
139
151
{
140
152
solver->set (" quiet" , 1 );
141
153
}
142
154
143
- satcheck_cadicalt ::~satcheck_cadicalt ()
155
+ satcheck_cadical_baset ::~satcheck_cadical_baset ()
144
156
{
145
157
delete solver;
146
158
}
147
159
148
- bool satcheck_cadicalt ::is_in_conflict (literalt a) const
160
+ bool satcheck_cadical_baset ::is_in_conflict (literalt a) const
149
161
{
150
162
return solver->failed (a.dimacs ());
151
163
}
0 commit comments