@@ -26,6 +26,8 @@ operator+=(const solver_hardnesst::sat_hardnesst &other)
26
26
clauses += other.clauses ;
27
27
literals += other.literals ;
28
28
variables.insert (other.variables .begin (), other.variables .end ());
29
+ clause_set.insert (clause_set.end (),
30
+ other.clause_set .begin (), other.clause_set .end ());
29
31
return *this ;
30
32
}
31
33
@@ -91,10 +93,20 @@ void solver_hardnesst::register_clause(const bvt &bv)
91
93
{
92
94
current_hardness.clauses ++;
93
95
current_hardness.literals += bv.size ();
96
+ std::vector<int > clause;
97
+
94
98
for (const auto &literal : bv)
95
99
{
96
100
current_hardness.variables .insert (literal.var_no ());
101
+
102
+ int signed_literal = literal.var_no ();
103
+ if (literal.sign ())
104
+ signed_literal = -signed_literal;
105
+ clause.push_back (signed_literal);
97
106
}
107
+ clause.push_back (0 );
108
+ std::sort (clause.begin (), clause.end ());
109
+ current_hardness.clause_set .push_back (clause);
98
110
}
99
111
100
112
void solver_hardnesst::set_outfile (const std::string &file_name)
@@ -151,6 +163,16 @@ void solver_hardnesst::produce_report()
151
163
sat_hardness_json[" Variables" ] =
152
164
json_numbert{std::to_string (hardness.variables .size ())};
153
165
166
+ json_arrayt sat_hardness_clause_set_json;
167
+ for (auto const &clause : hardness.clause_set )
168
+ {
169
+ json_arrayt clause_json;
170
+ for (auto const &lit : clause)
171
+ clause_json.push_back (json_numbert{std::to_string (lit)});
172
+ sat_hardness_clause_set_json.push_back (clause_json);
173
+ }
174
+ sat_hardness_json[" ClauseSet" ] = sat_hardness_clause_set_json;
175
+
154
176
hardness_stats_json[" SAT_hardness" ] = sat_hardness_json;
155
177
156
178
json_stream_array.push_back (hardness_stats_json);
@@ -183,6 +205,17 @@ void solver_hardnesst::produce_report()
183
205
assertion_hardness_json[" Variables" ] = json_numbert{
184
206
std::to_string (assertion_stats.sat_hardness .variables .size ())};
185
207
208
+ json_arrayt assertion_sat_hardness_clause_set_json;
209
+ for (auto const &clause : assertion_stats.sat_hardness .clause_set )
210
+ {
211
+ json_arrayt clause_json;
212
+ for (auto const &lit : clause)
213
+ clause_json.push_back (json_numbert{std::to_string (lit)});
214
+ assertion_sat_hardness_clause_set_json.push_back (clause_json);
215
+ }
216
+ assertion_hardness_json[" ClauseSet" ] =
217
+ assertion_sat_hardness_clause_set_json;
218
+
186
219
assertion_stats_json[" SAT_hardness" ] = assertion_hardness_json;
187
220
188
221
json_stream_array.push_back (assertion_stats_json);
0 commit comments