cadical 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/LICENSE.txt +26 -0
- data/README.md +101 -0
- data/ext/cadical/cadical/LICENSE +28 -0
- data/ext/cadical/cadical/README.md +65 -0
- data/ext/cadical/cadical/VERSION +1 -0
- data/ext/cadical/cadical/src/analyze.cpp +1360 -0
- data/ext/cadical/cadical/src/arena.cpp +30 -0
- data/ext/cadical/cadical/src/arena.hpp +105 -0
- data/ext/cadical/cadical/src/assume.cpp +616 -0
- data/ext/cadical/cadical/src/averages.cpp +34 -0
- data/ext/cadical/cadical/src/averages.hpp +37 -0
- data/ext/cadical/cadical/src/backbone.cpp +631 -0
- data/ext/cadical/cadical/src/backtrack.cpp +177 -0
- data/ext/cadical/cadical/src/backward.cpp +231 -0
- data/ext/cadical/cadical/src/bins.cpp +22 -0
- data/ext/cadical/cadical/src/bins.hpp +22 -0
- data/ext/cadical/cadical/src/block.cpp +824 -0
- data/ext/cadical/cadical/src/block.hpp +37 -0
- data/ext/cadical/cadical/src/cadical.cpp +1026 -0
- data/ext/cadical/cadical/src/cadical.hpp +1419 -0
- data/ext/cadical/cadical/src/ccadical.cpp +208 -0
- data/ext/cadical/cadical/src/ccadical.h +74 -0
- data/ext/cadical/cadical/src/checker.cpp +649 -0
- data/ext/cadical/cadical/src/checker.hpp +173 -0
- data/ext/cadical/cadical/src/clause.cpp +689 -0
- data/ext/cadical/cadical/src/clause.hpp +190 -0
- data/ext/cadical/cadical/src/collect.cpp +545 -0
- data/ext/cadical/cadical/src/compact.cpp +550 -0
- data/ext/cadical/cadical/src/condition.cpp +940 -0
- data/ext/cadical/cadical/src/config.cpp +101 -0
- data/ext/cadical/cadical/src/config.hpp +20 -0
- data/ext/cadical/cadical/src/congruence.cpp +7880 -0
- data/ext/cadical/cadical/src/congruence.hpp +757 -0
- data/ext/cadical/cadical/src/constrain.cpp +64 -0
- data/ext/cadical/cadical/src/contract.cpp +27 -0
- data/ext/cadical/cadical/src/contract.hpp +139 -0
- data/ext/cadical/cadical/src/cover.cpp +704 -0
- data/ext/cadical/cadical/src/cover.hpp +34 -0
- data/ext/cadical/cadical/src/decide.cpp +347 -0
- data/ext/cadical/cadical/src/decompose.cpp +738 -0
- data/ext/cadical/cadical/src/decompose.hpp +23 -0
- data/ext/cadical/cadical/src/deduplicate.cpp +275 -0
- data/ext/cadical/cadical/src/definition.cpp +283 -0
- data/ext/cadical/cadical/src/delay.hpp +38 -0
- data/ext/cadical/cadical/src/drattracer.cpp +153 -0
- data/ext/cadical/cadical/src/drattracer.hpp +55 -0
- data/ext/cadical/cadical/src/elim.cpp +1171 -0
- data/ext/cadical/cadical/src/elim.hpp +53 -0
- data/ext/cadical/cadical/src/elimfast.cpp +570 -0
- data/ext/cadical/cadical/src/ema.cpp +95 -0
- data/ext/cadical/cadical/src/ema.hpp +68 -0
- data/ext/cadical/cadical/src/extend.cpp +289 -0
- data/ext/cadical/cadical/src/external.cpp +1034 -0
- data/ext/cadical/cadical/src/external.hpp +487 -0
- data/ext/cadical/cadical/src/external_propagate.cpp +1316 -0
- data/ext/cadical/cadical/src/factor.cpp +1011 -0
- data/ext/cadical/cadical/src/factor.hpp +54 -0
- data/ext/cadical/cadical/src/file.cpp +506 -0
- data/ext/cadical/cadical/src/file.hpp +210 -0
- data/ext/cadical/cadical/src/flags.cpp +135 -0
- data/ext/cadical/cadical/src/flags.hpp +93 -0
- data/ext/cadical/cadical/src/flip.cpp +269 -0
- data/ext/cadical/cadical/src/format.cpp +89 -0
- data/ext/cadical/cadical/src/format.hpp +36 -0
- data/ext/cadical/cadical/src/frattracer.cpp +277 -0
- data/ext/cadical/cadical/src/frattracer.hpp +67 -0
- data/ext/cadical/cadical/src/gates.cpp +766 -0
- data/ext/cadical/cadical/src/heap.hpp +212 -0
- data/ext/cadical/cadical/src/idruptracer.cpp +566 -0
- data/ext/cadical/cadical/src/idruptracer.hpp +112 -0
- data/ext/cadical/cadical/src/instantiate.cpp +365 -0
- data/ext/cadical/cadical/src/instantiate.hpp +45 -0
- data/ext/cadical/cadical/src/internal.cpp +1265 -0
- data/ext/cadical/cadical/src/internal.hpp +1941 -0
- data/ext/cadical/cadical/src/inttypes.hpp +34 -0
- data/ext/cadical/cadical/src/ipasir.cpp +47 -0
- data/ext/cadical/cadical/src/ipasir.h +37 -0
- data/ext/cadical/cadical/src/kitten.c +2599 -0
- data/ext/cadical/cadical/src/kitten.h +97 -0
- data/ext/cadical/cadical/src/level.hpp +33 -0
- data/ext/cadical/cadical/src/lidruptracer.cpp +657 -0
- data/ext/cadical/cadical/src/lidruptracer.hpp +122 -0
- data/ext/cadical/cadical/src/limit.cpp +146 -0
- data/ext/cadical/cadical/src/limit.hpp +168 -0
- data/ext/cadical/cadical/src/logging.cpp +214 -0
- data/ext/cadical/cadical/src/logging.hpp +98 -0
- data/ext/cadical/cadical/src/lookahead.cpp +520 -0
- data/ext/cadical/cadical/src/lratchecker.cpp +833 -0
- data/ext/cadical/cadical/src/lratchecker.hpp +168 -0
- data/ext/cadical/cadical/src/lrattracer.cpp +200 -0
- data/ext/cadical/cadical/src/lrattracer.hpp +61 -0
- data/ext/cadical/cadical/src/lucky.cpp +506 -0
- data/ext/cadical/cadical/src/message.cpp +218 -0
- data/ext/cadical/cadical/src/message.hpp +65 -0
- data/ext/cadical/cadical/src/minimize.cpp +224 -0
- data/ext/cadical/cadical/src/mobical.cpp +5588 -0
- data/ext/cadical/cadical/src/occs.cpp +52 -0
- data/ext/cadical/cadical/src/occs.hpp +36 -0
- data/ext/cadical/cadical/src/options.cpp +359 -0
- data/ext/cadical/cadical/src/options.hpp +442 -0
- data/ext/cadical/cadical/src/parse.cpp +471 -0
- data/ext/cadical/cadical/src/parse.hpp +75 -0
- data/ext/cadical/cadical/src/phases.cpp +56 -0
- data/ext/cadical/cadical/src/phases.hpp +19 -0
- data/ext/cadical/cadical/src/probe.cpp +990 -0
- data/ext/cadical/cadical/src/profile.cpp +107 -0
- data/ext/cadical/cadical/src/profile.hpp +283 -0
- data/ext/cadical/cadical/src/proof.cpp +691 -0
- data/ext/cadical/cadical/src/proof.hpp +125 -0
- data/ext/cadical/cadical/src/propagate.cpp +584 -0
- data/ext/cadical/cadical/src/queue.cpp +90 -0
- data/ext/cadical/cadical/src/queue.hpp +74 -0
- data/ext/cadical/cadical/src/radix.hpp +180 -0
- data/ext/cadical/cadical/src/random.cpp +207 -0
- data/ext/cadical/cadical/src/random.h +44 -0
- data/ext/cadical/cadical/src/random.hpp +98 -0
- data/ext/cadical/cadical/src/range.hpp +125 -0
- data/ext/cadical/cadical/src/reap.cpp +127 -0
- data/ext/cadical/cadical/src/reap.hpp +28 -0
- data/ext/cadical/cadical/src/reduce.cpp +278 -0
- data/ext/cadical/cadical/src/reluctant.hpp +82 -0
- data/ext/cadical/cadical/src/rephase.cpp +402 -0
- data/ext/cadical/cadical/src/report.cpp +313 -0
- data/ext/cadical/cadical/src/resources.cpp +160 -0
- data/ext/cadical/cadical/src/resources.hpp +16 -0
- data/ext/cadical/cadical/src/restart.cpp +178 -0
- data/ext/cadical/cadical/src/restore.cpp +267 -0
- data/ext/cadical/cadical/src/score.cpp +51 -0
- data/ext/cadical/cadical/src/score.hpp +16 -0
- data/ext/cadical/cadical/src/shrink.cpp +507 -0
- data/ext/cadical/cadical/src/signal.cpp +136 -0
- data/ext/cadical/cadical/src/signal.hpp +33 -0
- data/ext/cadical/cadical/src/solution.cpp +50 -0
- data/ext/cadical/cadical/src/solver.cpp +1871 -0
- data/ext/cadical/cadical/src/stable.cpp +31 -0
- data/ext/cadical/cadical/src/stack.h +110 -0
- data/ext/cadical/cadical/src/stats.cpp +920 -0
- data/ext/cadical/cadical/src/stats.hpp +418 -0
- data/ext/cadical/cadical/src/subsume.cpp +645 -0
- data/ext/cadical/cadical/src/sweep.cpp +1960 -0
- data/ext/cadical/cadical/src/sweep.hpp +61 -0
- data/ext/cadical/cadical/src/terminal.cpp +38 -0
- data/ext/cadical/cadical/src/terminal.hpp +96 -0
- data/ext/cadical/cadical/src/ternary.cpp +450 -0
- data/ext/cadical/cadical/src/testing.hpp +24 -0
- data/ext/cadical/cadical/src/tier.cpp +189 -0
- data/ext/cadical/cadical/src/tracer.hpp +186 -0
- data/ext/cadical/cadical/src/transred.cpp +253 -0
- data/ext/cadical/cadical/src/unstable.cpp +29 -0
- data/ext/cadical/cadical/src/util.cpp +129 -0
- data/ext/cadical/cadical/src/util.hpp +181 -0
- data/ext/cadical/cadical/src/var.cpp +39 -0
- data/ext/cadical/cadical/src/var.hpp +22 -0
- data/ext/cadical/cadical/src/veripbtracer.cpp +427 -0
- data/ext/cadical/cadical/src/veripbtracer.hpp +106 -0
- data/ext/cadical/cadical/src/version.cpp +107 -0
- data/ext/cadical/cadical/src/version.hpp +13 -0
- data/ext/cadical/cadical/src/vivify.cpp +1893 -0
- data/ext/cadical/cadical/src/vivify.hpp +50 -0
- data/ext/cadical/cadical/src/walk.cpp +1088 -0
- data/ext/cadical/cadical/src/walk.hpp +91 -0
- data/ext/cadical/cadical/src/walk_full_occs.cpp +966 -0
- data/ext/cadical/cadical/src/warmup.cpp +403 -0
- data/ext/cadical/cadical/src/watch.cpp +126 -0
- data/ext/cadical/cadical/src/watch.hpp +77 -0
- data/ext/cadical/cadical_ext.c +778 -0
- data/ext/cadical/extconf.rb +26 -0
- data/lib/cadical/version.rb +3 -0
- data/lib/cadical.rb +12 -0
- metadata +218 -0
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
#include "internal.hpp"
|
|
2
|
+
|
|
3
|
+
namespace CaDiCaL {
|
|
4
|
+
|
|
5
|
+
/*------------------------------------------------------------------------*/
|
|
6
|
+
|
|
7
|
+
DratTracer::DratTracer (Internal *i, File *f, bool b)
|
|
8
|
+
: internal (i), file (f), binary (b)
|
|
9
|
+
#ifndef QUIET
|
|
10
|
+
,
|
|
11
|
+
added (0), deleted (0)
|
|
12
|
+
#endif
|
|
13
|
+
{
|
|
14
|
+
(void) internal;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
void DratTracer::connect_internal (Internal *i) {
|
|
18
|
+
internal = i;
|
|
19
|
+
file->connect_internal (internal);
|
|
20
|
+
LOG ("DRAT TRACER connected to internal");
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
DratTracer::~DratTracer () {
|
|
24
|
+
LOG ("DRAT TRACER delete");
|
|
25
|
+
delete file;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/*------------------------------------------------------------------------*/
|
|
29
|
+
|
|
30
|
+
inline void DratTracer::put_binary_zero () {
|
|
31
|
+
assert (binary);
|
|
32
|
+
assert (file);
|
|
33
|
+
file->put ((unsigned char) 0);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
inline void DratTracer::put_binary_lit (int lit) {
|
|
37
|
+
assert (binary);
|
|
38
|
+
assert (file);
|
|
39
|
+
assert (lit != INT_MIN);
|
|
40
|
+
unsigned idx = abs (lit);
|
|
41
|
+
assert (idx < (1u << 31));
|
|
42
|
+
unsigned x = 2u * idx + (lit < 0);
|
|
43
|
+
unsigned char ch;
|
|
44
|
+
while (x & ~0x7f) {
|
|
45
|
+
ch = (x & 0x7f) | 0x80;
|
|
46
|
+
file->put (ch);
|
|
47
|
+
x >>= 7;
|
|
48
|
+
}
|
|
49
|
+
ch = x;
|
|
50
|
+
file->put (ch);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/*------------------------------------------------------------------------*/
|
|
54
|
+
|
|
55
|
+
void DratTracer::drat_add_clause (const vector<int> &clause) {
|
|
56
|
+
if (binary)
|
|
57
|
+
file->put ('a');
|
|
58
|
+
for (const auto &external_lit : clause)
|
|
59
|
+
if (binary)
|
|
60
|
+
put_binary_lit (external_lit);
|
|
61
|
+
else
|
|
62
|
+
file->put (external_lit), file->put (' ');
|
|
63
|
+
if (binary)
|
|
64
|
+
put_binary_zero ();
|
|
65
|
+
else
|
|
66
|
+
file->put ("0\n");
|
|
67
|
+
}
|
|
68
|
+
void DratTracer::drat_delete_clause (const vector<int> &clause) {
|
|
69
|
+
if (binary)
|
|
70
|
+
file->put ('d');
|
|
71
|
+
else
|
|
72
|
+
file->put ("d ");
|
|
73
|
+
for (const auto &external_lit : clause)
|
|
74
|
+
if (binary)
|
|
75
|
+
put_binary_lit (external_lit);
|
|
76
|
+
else
|
|
77
|
+
file->put (external_lit), file->put (' ');
|
|
78
|
+
if (binary)
|
|
79
|
+
put_binary_zero ();
|
|
80
|
+
else
|
|
81
|
+
file->put ("0\n");
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/*------------------------------------------------------------------------*/
|
|
85
|
+
|
|
86
|
+
void DratTracer::add_derived_clause (int64_t, bool, int,
|
|
87
|
+
const vector<int> &clause,
|
|
88
|
+
const vector<int64_t> &) {
|
|
89
|
+
if (file->closed ())
|
|
90
|
+
return;
|
|
91
|
+
LOG ("DRAT TRACER tracing addition of derived clause");
|
|
92
|
+
drat_add_clause (clause);
|
|
93
|
+
#ifndef QUIET
|
|
94
|
+
added++;
|
|
95
|
+
#endif
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
void DratTracer::delete_clause (int64_t, bool, const vector<int> &clause) {
|
|
99
|
+
if (file->closed ())
|
|
100
|
+
return;
|
|
101
|
+
LOG ("DRAT TRACER tracing deletion of clause");
|
|
102
|
+
drat_delete_clause (clause);
|
|
103
|
+
#ifndef QUIET
|
|
104
|
+
deleted++;
|
|
105
|
+
#endif
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/*------------------------------------------------------------------------*/
|
|
109
|
+
|
|
110
|
+
bool DratTracer::closed () { return file->closed (); }
|
|
111
|
+
|
|
112
|
+
#ifndef QUIET
|
|
113
|
+
|
|
114
|
+
void DratTracer::print_statistics () {
|
|
115
|
+
uint64_t bytes = file->bytes ();
|
|
116
|
+
uint64_t total = added + deleted;
|
|
117
|
+
MSG ("DRAT %" PRId64 " added clauses %.2f%%", added,
|
|
118
|
+
percent (added, total));
|
|
119
|
+
MSG ("DRAT %" PRId64 " deleted clauses %.2f%%", deleted,
|
|
120
|
+
percent (deleted, total));
|
|
121
|
+
MSG ("DRAT %" PRId64 " bytes (%.2f MB)", bytes,
|
|
122
|
+
bytes / (double) (1 << 20));
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
#endif
|
|
126
|
+
|
|
127
|
+
void DratTracer::close (bool print) {
|
|
128
|
+
assert (!closed ());
|
|
129
|
+
file->close ();
|
|
130
|
+
#ifndef QUIET
|
|
131
|
+
if (print) {
|
|
132
|
+
MSG ("DRAT proof file '%s' closed", file->name ());
|
|
133
|
+
print_statistics ();
|
|
134
|
+
}
|
|
135
|
+
#else
|
|
136
|
+
(void) print;
|
|
137
|
+
#endif
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
void DratTracer::flush (bool print) {
|
|
141
|
+
assert (!closed ());
|
|
142
|
+
file->flush ();
|
|
143
|
+
#ifndef QUIET
|
|
144
|
+
if (print) {
|
|
145
|
+
MSG ("DRAT proof file '%s' flushed", file->name ());
|
|
146
|
+
print_statistics ();
|
|
147
|
+
}
|
|
148
|
+
#else
|
|
149
|
+
(void) print;
|
|
150
|
+
#endif
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
} // namespace CaDiCaL
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
#ifndef _drattracer_h_INCLUDED
|
|
2
|
+
#define _drattracer_h_INCLUDED
|
|
3
|
+
|
|
4
|
+
#include "file.hpp"
|
|
5
|
+
#include "tracer.hpp"
|
|
6
|
+
|
|
7
|
+
namespace CaDiCaL {
|
|
8
|
+
|
|
9
|
+
class DratTracer : public FileTracer {
|
|
10
|
+
|
|
11
|
+
Internal *internal;
|
|
12
|
+
File *file;
|
|
13
|
+
bool binary;
|
|
14
|
+
#ifndef QUIET
|
|
15
|
+
int64_t added, deleted;
|
|
16
|
+
#endif
|
|
17
|
+
void put_binary_zero ();
|
|
18
|
+
void put_binary_lit (int external_lit);
|
|
19
|
+
|
|
20
|
+
// support DRAT
|
|
21
|
+
void drat_add_clause (const std::vector<int> &);
|
|
22
|
+
void drat_delete_clause (const std::vector<int> &);
|
|
23
|
+
|
|
24
|
+
public:
|
|
25
|
+
// own and delete 'file'
|
|
26
|
+
DratTracer (Internal *, File *file, bool binary);
|
|
27
|
+
~DratTracer ();
|
|
28
|
+
|
|
29
|
+
void connect_internal (Internal *i) override;
|
|
30
|
+
void begin_proof (int64_t) override {} // skip
|
|
31
|
+
|
|
32
|
+
void add_original_clause (int64_t, bool, const std::vector<int> &,
|
|
33
|
+
bool = false) override {} // skip
|
|
34
|
+
|
|
35
|
+
void add_derived_clause (int64_t, bool, int, const std::vector<int> &,
|
|
36
|
+
const std::vector<int64_t> &) override;
|
|
37
|
+
|
|
38
|
+
void delete_clause (int64_t, bool, const std::vector<int> &) override;
|
|
39
|
+
|
|
40
|
+
void finalize_clause (int64_t, const std::vector<int> &) override {
|
|
41
|
+
} // skip
|
|
42
|
+
|
|
43
|
+
void report_status (int, int64_t) override {} // skip
|
|
44
|
+
|
|
45
|
+
#ifndef QUIET
|
|
46
|
+
void print_statistics ();
|
|
47
|
+
#endif
|
|
48
|
+
bool closed () override;
|
|
49
|
+
void close (bool) override;
|
|
50
|
+
void flush (bool) override;
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
} // namespace CaDiCaL
|
|
54
|
+
|
|
55
|
+
#endif
|