12 : internal (i), file (f), binary (b), with_antecedents (a)
15 added (0), deleted (0), finalized (0), original (0)
23 file->connect_internal (internal);
24 LOG (
"FRAT TRACER connected to internal");
28 LOG (
"FRAT TRACER delete");
34inline void FratTracer::put_binary_zero () {
37 file->put ((
unsigned char) 0);
40inline void FratTracer::put_binary_lit (
int lit) {
44 unsigned x = 2 * abs (
lit) + (
lit < 0);
47 ch = (x & 0x7f) | 0x80;
55inline void FratTracer::put_binary_id (int64_t
id,
bool can_be_negative) {
58 uint64_t x = abs (
id);
59 if (can_be_negative) {
64 ch = (x & 0x7f) | 0x80;
74void FratTracer::frat_add_original_clause (int64_t
id,
75 const vector<int> &
clause) {
83 file->put (
id), file->put (
" ");
84 for (
const auto &external_lit :
clause)
86 put_binary_lit (external_lit);
88 file->put (external_lit), file->put (
' ');
95void FratTracer::frat_add_derived_clause (int64_t
id,
96 const vector<int> &
clause) {
104 file->put (
id), file->put (
" ");
105 for (
const auto &external_lit :
clause)
107 put_binary_lit (external_lit);
109 file->put (external_lit), file->put (
' ');
116void FratTracer::frat_add_derived_clause (int64_t
id,
117 const vector<int> &
clause,
118 const vector<int64_t> &chain) {
126 file->put (
id), file->put (
" ");
127 for (
const auto &external_lit :
clause)
129 put_binary_lit (external_lit);
131 file->put (external_lit), file->put (
' ');
133 put_binary_zero (), file->put (
'l');
136 for (
const auto &c : chain)
138 put_binary_id (c,
true);
140 file->put (c), file->put (
' ');
147void FratTracer::frat_delete_clause (int64_t
id,
148 const vector<int> &
clause) {
156 file->put (
id), file->put (
" ");
157 for (
const auto &external_lit :
clause)
159 put_binary_lit (external_lit);
161 file->put (external_lit), file->put (
' ');
168void FratTracer::frat_finalize_clause (int64_t
id,
169 const vector<int> &
clause) {
177 file->put (
id), file->put (
" ");
178 for (
const auto &external_lit :
clause)
180 put_binary_lit (external_lit);
182 file->put (external_lit), file->put (
' ');
195 LOG (
"FRAT TRACER tracing addition of original clause");
196 frat_add_original_clause (
id,
clause);
204 LOG (
"FRAT TRACER tracing addition of derived clause");
205 if (with_antecedents)
206 frat_add_derived_clause (
id,
clause, chain);
208 frat_add_derived_clause (
id,
clause);
218 LOG (
"FRAT TRACER tracing deletion of clause");
219 frat_delete_clause (
id,
clause);
228 LOG (
"FRAT TRACER tracing finalization of clause");
229 frat_finalize_clause (
id,
clause);
238void FratTracer::print_statistics () {
240 uint64_t total = original + added + deleted + finalized;
241 MSG (
"FRAT %" PRId64
" original clauses %.2f%%", original,
243 MSG (
"FRAT %" PRId64
" added clauses %.2f%%", added,
245 MSG (
"FRAT %" PRId64
" deleted clauses %.2f%%", deleted,
247 MSG (
"FRAT %" PRId64
" finalized clauses %.2f%%", finalized,
249 MSG (
"FRAT %" PRId64
" bytes (%.2f MB)", bytes,
250 bytes / (
double) (1 << 20));
260 MSG (
"FRAT proof file '%s' closed", file->name ());
273 MSG (
"FRAT proof file '%s' flushed", file->name ());
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
#define CADICAL_assert(ignore)
void flush(bool) override
FratTracer(Internal *, File *file, bool binary, bool antecedents)
void connect_internal(Internal *i) override
void add_derived_clause(int64_t, bool, const vector< int > &, const vector< int64_t > &) override
void close(bool) override
void add_original_clause(int64_t, bool, const vector< int > &, bool=false) override
void delete_clause(int64_t, bool, const vector< int > &) override
void finalize_clause(int64_t, const vector< int > &) override
double percent(double a, double b)
struct clause_t clause
STRUCTURE DEFINITIONS ///.