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,920 @@
|
|
|
1
|
+
// vim: set tw=300: set VIM text width to 300 characters for this file.
|
|
2
|
+
|
|
3
|
+
#include "internal.hpp"
|
|
4
|
+
|
|
5
|
+
namespace CaDiCaL {
|
|
6
|
+
|
|
7
|
+
/*------------------------------------------------------------------------*/
|
|
8
|
+
|
|
9
|
+
Stats::Stats () {
|
|
10
|
+
time.real = absolute_real_time ();
|
|
11
|
+
time.process = absolute_process_time ();
|
|
12
|
+
walk.minimum = LONG_MAX;
|
|
13
|
+
used.resize (2);
|
|
14
|
+
used[0].resize (127);
|
|
15
|
+
used[1].resize (127);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/*------------------------------------------------------------------------*/
|
|
19
|
+
|
|
20
|
+
#define PRT(FMT, ...) \
|
|
21
|
+
do { \
|
|
22
|
+
if (FMT[0] == ' ' && !all) \
|
|
23
|
+
break; \
|
|
24
|
+
MSG (FMT, __VA_ARGS__); \
|
|
25
|
+
} while (0)
|
|
26
|
+
|
|
27
|
+
/*------------------------------------------------------------------------*/
|
|
28
|
+
|
|
29
|
+
void Stats::print (Internal *internal) {
|
|
30
|
+
|
|
31
|
+
#ifdef QUIET
|
|
32
|
+
(void) internal;
|
|
33
|
+
#else
|
|
34
|
+
|
|
35
|
+
Stats &stats = internal->stats;
|
|
36
|
+
|
|
37
|
+
int all = internal->opts.verbose > 0 || internal->opts.stats;
|
|
38
|
+
#ifdef LOGGING
|
|
39
|
+
if (internal->opts.log)
|
|
40
|
+
all = true;
|
|
41
|
+
#endif // ifdef LOGGING
|
|
42
|
+
|
|
43
|
+
if (internal->opts.profile)
|
|
44
|
+
internal->print_profile ();
|
|
45
|
+
|
|
46
|
+
double t = internal->solve_time ();
|
|
47
|
+
|
|
48
|
+
int64_t propagations = 0;
|
|
49
|
+
propagations += stats.propagations.cover;
|
|
50
|
+
propagations += stats.propagations.probe;
|
|
51
|
+
propagations += stats.propagations.search;
|
|
52
|
+
propagations += stats.propagations.transred;
|
|
53
|
+
propagations += stats.propagations.vivify;
|
|
54
|
+
|
|
55
|
+
int64_t vivified = stats.vivifysubs + stats.vivifystrs;
|
|
56
|
+
int64_t searchticks = stats.ticks.search[0] + stats.ticks.search[1];
|
|
57
|
+
int64_t inprobeticks = stats.ticks.vivify + stats.ticks.probe +
|
|
58
|
+
stats.ticks.factor + stats.ticks.ternary +
|
|
59
|
+
stats.ticks.sweep + stats.ticks.backbone;
|
|
60
|
+
int64_t totalticks = searchticks + inprobeticks;
|
|
61
|
+
|
|
62
|
+
size_t extendbytes = internal->external->extension.size ();
|
|
63
|
+
extendbytes *= sizeof (int);
|
|
64
|
+
|
|
65
|
+
SECTION ("statistics");
|
|
66
|
+
|
|
67
|
+
if (all || stats.blocked) {
|
|
68
|
+
PRT ("blocked: %15" PRId64
|
|
69
|
+
" %10.2f %% of irredundant clauses",
|
|
70
|
+
stats.blocked, percent (stats.blocked, stats.added.irredundant));
|
|
71
|
+
PRT (" blockings: %15" PRId64 " %10.2f internal",
|
|
72
|
+
stats.blockings, relative (stats.conflicts, stats.blockings));
|
|
73
|
+
PRT (" candidates: %15" PRId64 " %10.2f per blocking ",
|
|
74
|
+
stats.blockcands, relative (stats.blockcands, stats.blockings));
|
|
75
|
+
PRT (" blockres: %15" PRId64 " %10.2f per candidate",
|
|
76
|
+
stats.blockres, relative (stats.blockres, stats.blockcands));
|
|
77
|
+
PRT (" pure: %15" PRId64 " %10.2f %% of all variables",
|
|
78
|
+
stats.all.pure, percent (stats.all.pure, stats.vars));
|
|
79
|
+
PRT (" pureclauses: %15" PRId64 " %10.2f per pure literal",
|
|
80
|
+
stats.blockpured, relative (stats.blockpured, stats.all.pure));
|
|
81
|
+
}
|
|
82
|
+
if (all || stats.chrono)
|
|
83
|
+
PRT ("chronological: %15" PRId64 " %10.2f %% of conflicts",
|
|
84
|
+
stats.chrono, percent (stats.chrono, stats.conflicts));
|
|
85
|
+
if (all)
|
|
86
|
+
PRT ("compacts: %15" PRId64 " %10.2f interval",
|
|
87
|
+
stats.compacts, relative (stats.conflicts, stats.compacts));
|
|
88
|
+
if (all || stats.conflicts) {
|
|
89
|
+
PRT ("conflicts: %15" PRId64 " %10.2f per second",
|
|
90
|
+
stats.conflicts, relative (stats.conflicts, t));
|
|
91
|
+
PRT (" backtracked: %15" PRId64 " %10.2f %% of conflicts",
|
|
92
|
+
stats.backtracks, percent (stats.backtracks, stats.conflicts));
|
|
93
|
+
}
|
|
94
|
+
if (all || stats.incremental_decay) {
|
|
95
|
+
PRT ("inc-decay: %15" PRId64 " %10.2f %% per search",
|
|
96
|
+
stats.incremental_decay,
|
|
97
|
+
percent (stats.incremental_decay, stats.searches));
|
|
98
|
+
}
|
|
99
|
+
if (all || stats.backbone.rounds) {
|
|
100
|
+
PRT ("backbone: %15" PRId64 " %10.2f %% of vars",
|
|
101
|
+
stats.backbone.probes,
|
|
102
|
+
percent (stats.backbone.probes, stats.vars));
|
|
103
|
+
PRT (" rounds: %15" PRId64 " %10.2f per phase",
|
|
104
|
+
stats.backbone.rounds,
|
|
105
|
+
relative (stats.backbone.rounds, stats.backbone.phases));
|
|
106
|
+
PRT (" phases: %15" PRId64 " %10.2f interval",
|
|
107
|
+
stats.backbone.phases,
|
|
108
|
+
relative (stats.conflicts, stats.backbone.phases));
|
|
109
|
+
PRT (" units: %15" PRId64 " %10.2f per phase",
|
|
110
|
+
stats.backbone.units,
|
|
111
|
+
percent (stats.backbone.units, stats.backbone.phases));
|
|
112
|
+
}
|
|
113
|
+
if (all || stats.deduplicatedinit) {
|
|
114
|
+
PRT ("dedup-init-rnds: %15" PRId64 " %10.2f %% of interval",
|
|
115
|
+
stats.deduplicatedinitrounds,
|
|
116
|
+
percent (stats.deduplicatedinitrounds, stats.conflicts));
|
|
117
|
+
PRT ("dedup-init: %15" PRId64 " %10.2f %% of subsumed",
|
|
118
|
+
stats.deduplicatedinit,
|
|
119
|
+
percent (stats.deduplicatedinit, stats.deduplicatedinit));
|
|
120
|
+
}
|
|
121
|
+
if (all || stats.conditioned) {
|
|
122
|
+
PRT ("conditioned: %15" PRId64
|
|
123
|
+
" %10.2f %% of irredundant clauses",
|
|
124
|
+
stats.conditioned,
|
|
125
|
+
percent (stats.conditioned, stats.added.irredundant));
|
|
126
|
+
PRT (" conditionings: %15" PRId64 " %10.2f interval",
|
|
127
|
+
stats.conditionings,
|
|
128
|
+
relative (stats.conflicts, stats.conditionings));
|
|
129
|
+
PRT (" condcands: %15" PRId64 " %10.2f candidate clauses",
|
|
130
|
+
stats.condcands, relative (stats.condcands, stats.conditionings));
|
|
131
|
+
PRT (" condassinit: %17.1f %9.2f %% initial assigned",
|
|
132
|
+
relative (stats.condassinit, stats.conditionings),
|
|
133
|
+
percent (stats.condassinit, stats.condassvars));
|
|
134
|
+
PRT (" condcondinit: %17.1f %9.2f %% initial condition",
|
|
135
|
+
relative (stats.condcondinit, stats.conditionings),
|
|
136
|
+
percent (stats.condcondinit, stats.condassinit));
|
|
137
|
+
PRT (" condautinit: %17.1f %9.2f %% initial autarky",
|
|
138
|
+
relative (stats.condautinit, stats.conditionings),
|
|
139
|
+
percent (stats.condautinit, stats.condassinit));
|
|
140
|
+
PRT (" condassrem: %17.1f %9.2f %% final assigned",
|
|
141
|
+
relative (stats.condassrem, stats.conditioned),
|
|
142
|
+
percent (stats.condassrem, stats.condassirem));
|
|
143
|
+
PRT (" condcondrem: %19.3f %7.2f %% final conditional",
|
|
144
|
+
relative (stats.condcondrem, stats.conditioned),
|
|
145
|
+
percent (stats.condcondrem, stats.condassrem));
|
|
146
|
+
PRT (" condautrem: %19.3f %7.2f %% final autarky",
|
|
147
|
+
relative (stats.condautrem, stats.conditioned),
|
|
148
|
+
percent (stats.condautrem, stats.condassrem));
|
|
149
|
+
PRT (" condprops: %15" PRId64 " %10.2f per candidate",
|
|
150
|
+
stats.condprops, relative (stats.condprops, stats.condcands));
|
|
151
|
+
}
|
|
152
|
+
if (all || stats.cover.total) {
|
|
153
|
+
PRT ("covered: %15" PRId64
|
|
154
|
+
" %10.2f %% of irredundant clauses",
|
|
155
|
+
stats.cover.total,
|
|
156
|
+
percent (stats.cover.total, stats.added.irredundant));
|
|
157
|
+
PRT (" coverings: %15" PRId64 " %10.2f interval",
|
|
158
|
+
stats.cover.count, relative (stats.conflicts, stats.cover.count));
|
|
159
|
+
PRT (" asymmetric: %15" PRId64 " %10.2f %% of covered clauses",
|
|
160
|
+
stats.cover.asymmetric,
|
|
161
|
+
percent (stats.cover.asymmetric, stats.cover.total));
|
|
162
|
+
PRT (" blocked: %15" PRId64 " %10.2f %% of covered clauses",
|
|
163
|
+
stats.cover.blocked,
|
|
164
|
+
percent (stats.cover.blocked, stats.cover.total));
|
|
165
|
+
}
|
|
166
|
+
if (all || stats.decisions) {
|
|
167
|
+
PRT ("decisions: %15" PRId64 " %10.2f per second",
|
|
168
|
+
stats.decisions, relative (stats.decisions, t));
|
|
169
|
+
PRT (" searched: %15" PRId64 " %10.2f per decision",
|
|
170
|
+
stats.searched, relative (stats.searched, stats.decisions));
|
|
171
|
+
}
|
|
172
|
+
if (all || stats.randec.random_decisions) {
|
|
173
|
+
PRT ("rand. dec phase: %15" PRId64 " %10.2f per interval",
|
|
174
|
+
stats.randec.random_decision_phases,
|
|
175
|
+
relative (stats.randec.random_decision_phases, stats.decisions));
|
|
176
|
+
PRT ("random decs: %15" PRId64 " %10.2f per phase",
|
|
177
|
+
stats.randec.random_decisions,
|
|
178
|
+
relative (stats.randec.random_decisions,
|
|
179
|
+
stats.randec.random_decision_phases));
|
|
180
|
+
}
|
|
181
|
+
if (all || stats.all.eliminated) {
|
|
182
|
+
PRT ("eliminated: %15" PRId64 " %10.2f %% of all variables",
|
|
183
|
+
stats.all.eliminated, percent (stats.all.eliminated, stats.vars));
|
|
184
|
+
PRT (" fastelim: %15" PRId64 " %10.2f %% of eliminated",
|
|
185
|
+
stats.all.fasteliminated,
|
|
186
|
+
percent (stats.all.fasteliminated, stats.all.eliminated));
|
|
187
|
+
PRT (" elimphases: %15" PRId64 " %10.2f interval",
|
|
188
|
+
stats.elimphases, relative (stats.conflicts, stats.elimphases));
|
|
189
|
+
PRT (" elimrounds: %15" PRId64 " %10.2f per phase",
|
|
190
|
+
stats.elimrounds, relative (stats.elimrounds, stats.elimphases));
|
|
191
|
+
PRT (" elimtried: %15" PRId64 " %10.2f %% eliminated",
|
|
192
|
+
stats.elimtried, percent (stats.all.eliminated, stats.elimtried));
|
|
193
|
+
PRT (" elimgates: %15" PRId64 " %10.2f %% gates per tried",
|
|
194
|
+
stats.elimgates, percent (stats.elimgates, stats.elimtried));
|
|
195
|
+
PRT (" elimequivs: %15" PRId64 " %10.2f %% equivalence gates",
|
|
196
|
+
stats.elimequivs, percent (stats.elimequivs, stats.elimgates));
|
|
197
|
+
PRT (" elimands: %15" PRId64 " %10.2f %% and gates",
|
|
198
|
+
stats.elimands, percent (stats.elimands, stats.elimgates));
|
|
199
|
+
PRT (" elimites: %15" PRId64 " %10.2f %% if-then-else gates",
|
|
200
|
+
stats.elimites, percent (stats.elimites, stats.elimgates));
|
|
201
|
+
PRT (" elimxors: %15" PRId64 " %10.2f %% xor gates",
|
|
202
|
+
stats.elimxors, percent (stats.elimxors, stats.elimgates));
|
|
203
|
+
PRT (" elimdefs: %15" PRId64 " %10.2f %% definitions",
|
|
204
|
+
stats.definitions_extracted,
|
|
205
|
+
percent (stats.definitions_extracted, stats.elimgates));
|
|
206
|
+
PRT (" elimsubst: %15" PRId64 " %10.2f %% substituted",
|
|
207
|
+
stats.elimsubst, percent (stats.elimsubst, stats.all.eliminated));
|
|
208
|
+
PRT (" elimsubstequi: %15" PRId64 " %10.2f %% equivalence gates",
|
|
209
|
+
stats.eliminated_equi,
|
|
210
|
+
percent (stats.eliminated_equi, stats.elimsubst));
|
|
211
|
+
PRT (" elimsubstands: %15" PRId64 " %10.2f %% and gates",
|
|
212
|
+
stats.eliminated_and,
|
|
213
|
+
percent (stats.eliminated_and, stats.elimsubst));
|
|
214
|
+
PRT (" elimsubstites: %15" PRId64 " %10.2f %% if-then-else gates",
|
|
215
|
+
stats.eliminated_ite,
|
|
216
|
+
percent (stats.eliminated_ite, stats.elimsubst));
|
|
217
|
+
PRT (" elimsubstxors: %15" PRId64 " %10.2f %% xor gates",
|
|
218
|
+
stats.eliminated_xor,
|
|
219
|
+
percent (stats.eliminated_xor, stats.elimsubst));
|
|
220
|
+
PRT (" elimsubstdefs: %15" PRId64 " %10.2f %% definitions",
|
|
221
|
+
stats.eliminated_def,
|
|
222
|
+
percent (stats.eliminated_def, stats.elimsubst));
|
|
223
|
+
PRT (" elimres: %15" PRId64 " %10.2f per eliminated",
|
|
224
|
+
stats.elimres, relative (stats.elimres, stats.all.eliminated));
|
|
225
|
+
PRT (" elimrestried: %15" PRId64 " %10.2f %% per resolution",
|
|
226
|
+
stats.elimrestried, percent (stats.elimrestried, stats.elimres));
|
|
227
|
+
PRT (" def checked: %15" PRId64 " %10.2f per phase",
|
|
228
|
+
stats.definitions_checked,
|
|
229
|
+
relative (stats.definitions_checked, stats.elimphases));
|
|
230
|
+
PRT (" def extracted: %15" PRId64 " %10.2f %% per checked",
|
|
231
|
+
stats.definitions_extracted,
|
|
232
|
+
percent (stats.definitions_extracted, stats.definitions_checked));
|
|
233
|
+
PRT (" def units: %15" PRId64 " %10.2f %% per checked",
|
|
234
|
+
stats.definition_units,
|
|
235
|
+
percent (stats.definition_units, stats.definitions_checked));
|
|
236
|
+
}
|
|
237
|
+
if (all || stats.ext_prop.ext_cb) {
|
|
238
|
+
PRT ("ext.prop. calls: %15" PRId64 " %10.2f %% of queries",
|
|
239
|
+
stats.ext_prop.eprop_call,
|
|
240
|
+
percent (stats.ext_prop.eprop_call, stats.ext_prop.ext_cb));
|
|
241
|
+
PRT (" propagating: %15" PRId64 " %10.2f %% per eprop-call",
|
|
242
|
+
stats.ext_prop.eprop_prop,
|
|
243
|
+
percent (stats.ext_prop.eprop_prop, stats.ext_prop.eprop_call));
|
|
244
|
+
PRT (" explained: %15" PRId64 " %10.2f %% per eprop-call",
|
|
245
|
+
stats.ext_prop.eprop_expl,
|
|
246
|
+
percent (stats.ext_prop.eprop_expl, stats.ext_prop.eprop_call));
|
|
247
|
+
PRT (" falsified: %15" PRId64 " %10.2f %% per eprop-call",
|
|
248
|
+
stats.ext_prop.eprop_conf,
|
|
249
|
+
percent (stats.ext_prop.eprop_conf, stats.ext_prop.eprop_call));
|
|
250
|
+
PRT ("ext.clause calls:%15" PRId64 " %10.2f %% of queries",
|
|
251
|
+
stats.ext_prop.elearn_call,
|
|
252
|
+
percent (stats.ext_prop.elearn_call, stats.ext_prop.ext_cb));
|
|
253
|
+
PRT (" learned: %15" PRId64 " %10.2f %% per called",
|
|
254
|
+
stats.ext_prop.elearned,
|
|
255
|
+
percent (stats.ext_prop.elearned, stats.ext_prop.elearn_call));
|
|
256
|
+
PRT (" conflicting: %15" PRId64 " %10.2f %% per learned",
|
|
257
|
+
stats.ext_prop.elearn_conf,
|
|
258
|
+
percent (stats.ext_prop.elearn_conf, stats.ext_prop.elearned));
|
|
259
|
+
PRT (" propagating: %15" PRId64 " %10.2f %% per learned",
|
|
260
|
+
stats.ext_prop.elearn_prop,
|
|
261
|
+
percent (stats.ext_prop.elearn_prop, stats.ext_prop.elearned));
|
|
262
|
+
PRT ("ext.final check: %15" PRId64 " %10.2f %% of queries",
|
|
263
|
+
stats.ext_prop.echeck_call,
|
|
264
|
+
percent (stats.ext_prop.echeck_call, stats.ext_prop.ext_cb));
|
|
265
|
+
}
|
|
266
|
+
if (all || stats.factored) {
|
|
267
|
+
PRT ("factored: %15" PRId64 " %10.2f %% of variables",
|
|
268
|
+
stats.factored, percent (stats.factored, internal->max_var));
|
|
269
|
+
PRT (" factor: %15" PRId64 " %10.2f conflict interval",
|
|
270
|
+
stats.factor, relative (stats.conflicts, stats.factor));
|
|
271
|
+
PRT (" cls factored: %15" PRId64 " %10.2f per factored",
|
|
272
|
+
stats.factor_added, relative (stats.factor_added, factored));
|
|
273
|
+
PRT (" lits factored: %15" PRId64 " %10.2f per factored",
|
|
274
|
+
stats.literals_factored,
|
|
275
|
+
relative (stats.literals_factored, factored));
|
|
276
|
+
PRT (" cls unfactored:%15" PRId64 " %10.2f per factored",
|
|
277
|
+
stats.clauses_unfactored,
|
|
278
|
+
relative (stats.clauses_unfactored, factored));
|
|
279
|
+
PRT (" lits unfactored:%14" PRId64 " %10.2f per factored",
|
|
280
|
+
stats.literals_unfactored,
|
|
281
|
+
relative (stats.literals_unfactored, factored));
|
|
282
|
+
}
|
|
283
|
+
if (all || stats.all.fixed) {
|
|
284
|
+
PRT ("fixed: %15" PRId64 " %10.2f %% of all variables",
|
|
285
|
+
stats.all.fixed, percent (stats.all.fixed, stats.vars));
|
|
286
|
+
PRT (" failed: %15" PRId64 " %10.2f %% of all variables",
|
|
287
|
+
stats.failed, percent (stats.failed, stats.vars));
|
|
288
|
+
PRT (" probefailed: %15" PRId64 " %10.2f %% per failed",
|
|
289
|
+
stats.probefailed, percent (stats.probefailed, stats.failed));
|
|
290
|
+
PRT (" transredunits: %15" PRId64 " %10.2f %% per failed",
|
|
291
|
+
stats.transredunits, percent (stats.transredunits, stats.failed));
|
|
292
|
+
PRT (" inprobephases: %15" PRId64 " %10.2f interval",
|
|
293
|
+
stats.inprobingphases,
|
|
294
|
+
relative (stats.conflicts, stats.inprobingphases));
|
|
295
|
+
PRT (" inprobesuccess:%15" PRId64 " %10.2f %% phases",
|
|
296
|
+
stats.inprobesuccess,
|
|
297
|
+
percent (stats.inprobesuccess, stats.inprobingphases));
|
|
298
|
+
PRT (" probingrounds: %15" PRId64 " %10.2f per phase",
|
|
299
|
+
stats.probingrounds,
|
|
300
|
+
relative (stats.probingrounds, stats.inprobingphases));
|
|
301
|
+
PRT (" probed: %15" PRId64 " %10.2f per failed",
|
|
302
|
+
stats.probed, relative (stats.probed, stats.failed));
|
|
303
|
+
PRT (" hbrs: %15" PRId64 " %10.2f per probed",
|
|
304
|
+
stats.hbrs, relative (stats.hbrs, stats.probed));
|
|
305
|
+
PRT (" hbrsizes: %15" PRId64 " %10.2f per hbr",
|
|
306
|
+
stats.hbrsizes, relative (stats.hbrsizes, stats.hbrs));
|
|
307
|
+
PRT (" hbreds: %15" PRId64 " %10.2f %% per hbr",
|
|
308
|
+
stats.hbreds, percent (stats.hbreds, stats.hbrs));
|
|
309
|
+
PRT (" hbrsubs: %15" PRId64 " %10.2f %% per hbr",
|
|
310
|
+
stats.hbrsubs, percent (stats.hbrsubs, stats.hbrs));
|
|
311
|
+
}
|
|
312
|
+
PRT (" units: %15" PRId64 " %10.2f interval", stats.units,
|
|
313
|
+
relative (stats.conflicts, stats.units));
|
|
314
|
+
PRT (" binaries: %15" PRId64 " %10.2f interval",
|
|
315
|
+
stats.binaries, relative (stats.conflicts, stats.binaries));
|
|
316
|
+
if (all || stats.flush.learned) {
|
|
317
|
+
PRT ("flushed: %15" PRId64 " %10.2f %% per conflict",
|
|
318
|
+
stats.flush.learned,
|
|
319
|
+
percent (stats.flush.learned, stats.conflicts));
|
|
320
|
+
PRT (" hyper: %15" PRId64 " %10.2f %% per conflict",
|
|
321
|
+
stats.flush.hyper, relative (stats.flush.hyper, stats.conflicts));
|
|
322
|
+
PRT (" flushings: %15" PRId64 " %10.2f interval",
|
|
323
|
+
stats.flush.count, relative (stats.conflicts, stats.flush.count));
|
|
324
|
+
}
|
|
325
|
+
if (all || stats.instantiated) {
|
|
326
|
+
PRT ("instantiated: %15" PRId64 " %10.2f %% of tried",
|
|
327
|
+
stats.instantiated, percent (stats.instantiated, stats.instried));
|
|
328
|
+
PRT (" instrounds: %15" PRId64 " %10.2f %% of elimrounds",
|
|
329
|
+
stats.instrounds, percent (stats.instrounds, stats.elimrounds));
|
|
330
|
+
}
|
|
331
|
+
if (all || stats.conflicts) {
|
|
332
|
+
PRT ("learned: %15" PRId64 " %10.2f %% per conflict",
|
|
333
|
+
stats.learned.clauses,
|
|
334
|
+
percent (stats.learned.clauses, stats.conflicts));
|
|
335
|
+
PRT (" bumped: %15" PRId64 " %10.2f per learned",
|
|
336
|
+
stats.bumped, relative (stats.bumped, stats.learned.clauses));
|
|
337
|
+
PRT (" recomputed: %15" PRId64 " %10.2f %% per learned",
|
|
338
|
+
stats.recomputed,
|
|
339
|
+
percent (stats.recomputed, stats.learned.clauses));
|
|
340
|
+
PRT (" promoted1: %15" PRId64 " %10.2f %% per learned",
|
|
341
|
+
stats.promoted1, percent (stats.promoted1, stats.learned.clauses));
|
|
342
|
+
PRT (" promoted2: %15" PRId64 " %10.2f %% per learned",
|
|
343
|
+
stats.promoted2, percent (stats.promoted2, stats.learned.clauses));
|
|
344
|
+
PRT (" improvedglue: %15" PRId64 " %10.2f %% per learned",
|
|
345
|
+
stats.improvedglue,
|
|
346
|
+
percent (stats.improvedglue, stats.learned.clauses));
|
|
347
|
+
}
|
|
348
|
+
if (all || stats.lucky.succeeded) {
|
|
349
|
+
PRT ("lucky: %15" PRId64 " %10.2f %% of tried",
|
|
350
|
+
stats.lucky.succeeded,
|
|
351
|
+
percent (stats.lucky.succeeded, stats.lucky.tried));
|
|
352
|
+
PRT (" constantzero %15" PRId64 " %10.2f %% of tried",
|
|
353
|
+
stats.lucky.constant.zero,
|
|
354
|
+
percent (stats.lucky.constant.zero, stats.lucky.tried));
|
|
355
|
+
PRT (" constantone %15" PRId64 " %10.2f %% of tried",
|
|
356
|
+
stats.lucky.constant.one,
|
|
357
|
+
percent (stats.lucky.constant.one, stats.lucky.tried));
|
|
358
|
+
PRT (" backwardone %15" PRId64 " %10.2f %% of tried",
|
|
359
|
+
stats.lucky.backward.one,
|
|
360
|
+
percent (stats.lucky.backward.one, stats.lucky.tried));
|
|
361
|
+
PRT (" backwardzero %15" PRId64 " %10.2f %% of tried",
|
|
362
|
+
stats.lucky.backward.zero,
|
|
363
|
+
percent (stats.lucky.backward.zero, stats.lucky.tried));
|
|
364
|
+
PRT (" forwardone %15" PRId64 " %10.2f %% of tried",
|
|
365
|
+
stats.lucky.forward.one,
|
|
366
|
+
percent (stats.lucky.forward.one, stats.lucky.tried));
|
|
367
|
+
PRT (" forwardzero %15" PRId64 " %10.2f %% of tried",
|
|
368
|
+
stats.lucky.forward.zero,
|
|
369
|
+
percent (stats.lucky.forward.zero, stats.lucky.tried));
|
|
370
|
+
PRT (" positivehorn %15" PRId64 " %10.2f %% of tried",
|
|
371
|
+
stats.lucky.horn.positive,
|
|
372
|
+
percent (stats.lucky.horn.positive, stats.lucky.tried));
|
|
373
|
+
PRT (" negativehorn %15" PRId64 " %10.2f %% of tried",
|
|
374
|
+
stats.lucky.horn.negative,
|
|
375
|
+
percent (stats.lucky.horn.negative, stats.lucky.tried));
|
|
376
|
+
}
|
|
377
|
+
PRT (" extendbytes: %15zd %10.2f bytes and MB", extendbytes,
|
|
378
|
+
extendbytes / (double) (1l << 20));
|
|
379
|
+
if (all || stats.learned.clauses)
|
|
380
|
+
PRT ("learned_lits: %15" PRId64 " %10.2f %% learned literals",
|
|
381
|
+
stats.learned.literals,
|
|
382
|
+
percent (stats.learned.literals, stats.learned.literals));
|
|
383
|
+
PRT ("minimized: %15" PRId64 " %10.2f %% learned literals",
|
|
384
|
+
stats.minimized, percent (stats.minimized, stats.learned.literals));
|
|
385
|
+
PRT ("shrunken: %15" PRId64 " %10.2f %% learned literals",
|
|
386
|
+
stats.shrunken, percent (stats.shrunken, stats.learned.literals));
|
|
387
|
+
PRT ("minishrunken: %15" PRId64 " %10.2f %% learned literals",
|
|
388
|
+
stats.minishrunken,
|
|
389
|
+
percent (stats.minishrunken, stats.learned.literals));
|
|
390
|
+
|
|
391
|
+
if (all || stats.conflicts) {
|
|
392
|
+
PRT ("otfs: %15" PRId64 " %10.2f %% of conflict",
|
|
393
|
+
stats.otfs.subsumed + stats.otfs.strengthened,
|
|
394
|
+
percent (stats.otfs.subsumed + stats.otfs.strengthened,
|
|
395
|
+
stats.conflicts));
|
|
396
|
+
PRT (" subsumed %15" PRId64 " %10.2f %% of conflict",
|
|
397
|
+
stats.otfs.subsumed,
|
|
398
|
+
percent (stats.otfs.subsumed, stats.conflicts));
|
|
399
|
+
PRT (" strengthened %15" PRId64 " %10.2f %% of conflict",
|
|
400
|
+
stats.otfs.strengthened,
|
|
401
|
+
percent (stats.otfs.strengthened, stats.conflicts));
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
PRT ("propagations: %15" PRId64 " %10.2f M per second",
|
|
405
|
+
propagations, relative (propagations / 1e6, t));
|
|
406
|
+
PRT (" coverprops: %15" PRId64 " %10.2f %% of propagations",
|
|
407
|
+
stats.propagations.cover,
|
|
408
|
+
percent (stats.propagations.cover, propagations));
|
|
409
|
+
PRT (" probeprops: %15" PRId64 " %10.2f %% of propagations",
|
|
410
|
+
stats.propagations.probe,
|
|
411
|
+
percent (stats.propagations.probe, propagations));
|
|
412
|
+
PRT (" searchprops: %15" PRId64 " %10.2f %% of propagations",
|
|
413
|
+
stats.propagations.search,
|
|
414
|
+
percent (stats.propagations.search, propagations));
|
|
415
|
+
PRT (" transredprops: %15" PRId64 " %10.2f %% of propagations",
|
|
416
|
+
stats.propagations.transred,
|
|
417
|
+
percent (stats.propagations.transred, propagations));
|
|
418
|
+
PRT (" vivifyprops: %15" PRId64 " %10.2f %% of propagations",
|
|
419
|
+
stats.propagations.vivify,
|
|
420
|
+
percent (stats.propagations.vivify, propagations));
|
|
421
|
+
if (all || stats.reactivated) {
|
|
422
|
+
PRT ("reactivated: %15" PRId64 " %10.2f %% of all variables",
|
|
423
|
+
stats.reactivated, percent (stats.reactivated, stats.vars));
|
|
424
|
+
}
|
|
425
|
+
if (all || stats.reduced) {
|
|
426
|
+
PRT ("reduced: %15" PRId64 " %10.2f %% per conflict",
|
|
427
|
+
stats.reduced, percent (stats.reduced, stats.conflicts));
|
|
428
|
+
PRT (" reductions: %15" PRId64 " %10.2f interval",
|
|
429
|
+
stats.reductions, relative (stats.conflicts, stats.reductions));
|
|
430
|
+
PRT (" sqrt scheme: %15" PRId64 " %10.2f %% reductions",
|
|
431
|
+
stats.reduced_sqrt,
|
|
432
|
+
relative (stats.reduced_sqrt, stats.reductions));
|
|
433
|
+
PRT (" prct scheme: %15" PRId64 " %10.2f %% reductions",
|
|
434
|
+
stats.reduced_prct,
|
|
435
|
+
relative (stats.reduced_prct, stats.reductions));
|
|
436
|
+
PRT (" collections: %15" PRId64 " %10.2f interval",
|
|
437
|
+
stats.collections, relative (stats.conflicts, stats.collections));
|
|
438
|
+
}
|
|
439
|
+
if (all || stats.rephased.total) {
|
|
440
|
+
PRT ("rephased: %15" PRId64 " %10.2f interval",
|
|
441
|
+
stats.rephased.total,
|
|
442
|
+
relative (stats.conflicts, stats.rephased.total));
|
|
443
|
+
PRT (" rephasedbest: %15" PRId64 " %10.2f %% rephased best",
|
|
444
|
+
stats.rephased.best,
|
|
445
|
+
percent (stats.rephased.best, stats.rephased.total));
|
|
446
|
+
PRT (" rephasedflip: %15" PRId64 " %10.2f %% rephased flipping",
|
|
447
|
+
stats.rephased.flipped,
|
|
448
|
+
percent (stats.rephased.flipped, stats.rephased.total));
|
|
449
|
+
PRT (" rephasedinv: %15" PRId64 " %10.2f %% rephased inverted",
|
|
450
|
+
stats.rephased.inverted,
|
|
451
|
+
percent (stats.rephased.inverted, stats.rephased.total));
|
|
452
|
+
PRT (" rephasedorig: %15" PRId64 " %10.2f %% rephased original",
|
|
453
|
+
stats.rephased.original,
|
|
454
|
+
percent (stats.rephased.original, stats.rephased.total));
|
|
455
|
+
PRT (" rephasedrand: %15" PRId64 " %10.2f %% rephased random",
|
|
456
|
+
stats.rephased.random,
|
|
457
|
+
percent (stats.rephased.random, stats.rephased.total));
|
|
458
|
+
PRT (" rephasedwalk: %15" PRId64 " %10.2f %% rephased walk",
|
|
459
|
+
stats.rephased.walk,
|
|
460
|
+
percent (stats.rephased.walk, stats.rephased.total));
|
|
461
|
+
}
|
|
462
|
+
if (all)
|
|
463
|
+
PRT ("rescored: %15" PRId64 " %10.2f interval",
|
|
464
|
+
stats.rescored, relative (stats.conflicts, stats.rescored));
|
|
465
|
+
if (all || stats.restarts) {
|
|
466
|
+
PRT ("restarts: %15" PRId64 " %10.2f interval",
|
|
467
|
+
stats.restarts, relative (stats.conflicts, stats.restarts));
|
|
468
|
+
PRT (" reused: %15" PRId64 " %10.2f %% per restart",
|
|
469
|
+
stats.reused, percent (stats.reused, stats.restarts));
|
|
470
|
+
PRT (" reusedlevels: %15" PRId64 " %10.2f %% per restart levels",
|
|
471
|
+
stats.reusedlevels,
|
|
472
|
+
percent (stats.reusedlevels, stats.restartlevels));
|
|
473
|
+
}
|
|
474
|
+
if (all || stats.restored) {
|
|
475
|
+
PRT ("restored: %15" PRId64 " %10.2f %% per weakened",
|
|
476
|
+
stats.restored, percent (stats.restored, stats.weakened));
|
|
477
|
+
PRT (" restorations: %15" PRId64 " %10.2f %% per extension",
|
|
478
|
+
stats.restorations,
|
|
479
|
+
percent (stats.restorations, stats.extensions));
|
|
480
|
+
PRT (" literals: %15" PRId64 " %10.2f per restored clause",
|
|
481
|
+
stats.restoredlits, relative (stats.restoredlits, stats.restored));
|
|
482
|
+
}
|
|
483
|
+
if (all || stats.stabphases) {
|
|
484
|
+
PRT ("stabilizing: %15" PRId64 " %10.2f %% of conflicts",
|
|
485
|
+
stats.stabphases, percent (stats.stabconflicts, stats.conflicts));
|
|
486
|
+
PRT (" restartstab: %15" PRId64 " %10.2f %% of all restarts",
|
|
487
|
+
stats.restartstable,
|
|
488
|
+
percent (stats.restartstable, stats.restarts));
|
|
489
|
+
PRT (" reusedstab: %15" PRId64 " %10.2f %% per stable restarts",
|
|
490
|
+
stats.reusedstable,
|
|
491
|
+
percent (stats.reusedstable, stats.restartstable));
|
|
492
|
+
}
|
|
493
|
+
if (all || stats.all.substituted) {
|
|
494
|
+
PRT ("substituted: %15" PRId64 " %10.2f %% of all variables",
|
|
495
|
+
stats.all.substituted,
|
|
496
|
+
percent (stats.all.substituted, stats.vars));
|
|
497
|
+
PRT (" decompositions:%15" PRId64 " %10.2f per phase",
|
|
498
|
+
stats.decompositions,
|
|
499
|
+
relative (stats.decompositions, stats.inprobingphases));
|
|
500
|
+
}
|
|
501
|
+
if (all || stats.sweep_equivalences) {
|
|
502
|
+
PRT ("sweep equivs: %15" PRId64 " %10.2f %% of swept variables",
|
|
503
|
+
stats.sweep_equivalences,
|
|
504
|
+
percent (stats.sweep_equivalences, stats.sweep_variables));
|
|
505
|
+
PRT (" sweepings: %15" PRId64 " %10.2f vars per sweeping",
|
|
506
|
+
stats.sweep, relative (stats.sweep_variables, stats.sweep));
|
|
507
|
+
PRT (" swept vars: %15" PRId64 " %10.2f %% of all variables",
|
|
508
|
+
stats.sweep_variables,
|
|
509
|
+
percent (stats.sweep_variables, stats.vars));
|
|
510
|
+
PRT (" sweep units: %15" PRId64 " %10.2f %% of all variables",
|
|
511
|
+
stats.sweep_units, percent (stats.sweep_units, stats.vars));
|
|
512
|
+
PRT (" solved: %15" PRId64 " %10.2f per swept variable",
|
|
513
|
+
stats.sweep_solved,
|
|
514
|
+
relative (stats.sweep_solved, stats.sweep_variables));
|
|
515
|
+
PRT (" sat: %15" PRId64 " %10.2f %% solved",
|
|
516
|
+
stats.sweep_sat, percent (stats.sweep_sat, stats.sweep_solved));
|
|
517
|
+
PRT (" unsat: %15" PRId64 " %10.2f %% solved",
|
|
518
|
+
stats.sweep_unsat,
|
|
519
|
+
percent (stats.sweep_unsat, stats.sweep_solved));
|
|
520
|
+
PRT (" backbone solved:%14" PRId64 " %10.2f %% solved",
|
|
521
|
+
stats.sweep_solved_backbone,
|
|
522
|
+
percent (stats.sweep_solved_backbone, stats.sweep_solved));
|
|
523
|
+
PRT (" sat: %15" PRId64 " %10.2f %% backbone solved",
|
|
524
|
+
stats.sweep_sat_backbone,
|
|
525
|
+
percent (stats.sweep_sat_backbone, stats.sweep_solved_backbone));
|
|
526
|
+
PRT (" unsat: %15" PRId64 " %10.2f %% backbone solved",
|
|
527
|
+
stats.sweep_unsat_backbone,
|
|
528
|
+
percent (stats.sweep_unsat_backbone, stats.sweep_solved_backbone));
|
|
529
|
+
PRT (" unknown: %15" PRId64 " %10.2f %% backbone solved",
|
|
530
|
+
stats.sweep_unknown_backbone,
|
|
531
|
+
percent (stats.sweep_unknown_backbone,
|
|
532
|
+
stats.sweep_solved_backbone));
|
|
533
|
+
PRT (" fixed: %15" PRId64 " %10.2f per swept variable",
|
|
534
|
+
stats.sweep_fixed_backbone,
|
|
535
|
+
relative (stats.sweep_fixed_backbone, stats.sweep_variables));
|
|
536
|
+
PRT (" flip: %15" PRId64 " %10.2f per swept variable",
|
|
537
|
+
stats.sweep_flip_backbone,
|
|
538
|
+
relative (stats.sweep_flip_backbone, stats.sweep_variables));
|
|
539
|
+
PRT (" flipped: %15" PRId64 " %10.2f %% of backbone flip",
|
|
540
|
+
stats.sweep_flipped_backbone,
|
|
541
|
+
percent (stats.sweep_flipped_backbone, stats.sweep_flip_backbone));
|
|
542
|
+
PRT (" equiv solved: %15" PRId64 " %10.2f %% solved",
|
|
543
|
+
stats.sweep_solved_equivalences,
|
|
544
|
+
percent (stats.sweep_solved_equivalences, stats.sweep_solved));
|
|
545
|
+
PRT (" sat: %15" PRId64 " %10.2f %% equiv solved",
|
|
546
|
+
stats.sweep_sat_equivalences,
|
|
547
|
+
percent (stats.sweep_sat_equivalences,
|
|
548
|
+
stats.sweep_solved_equivalences));
|
|
549
|
+
PRT (" unsat: %15" PRId64 " %10.2f %% equiv solved",
|
|
550
|
+
stats.sweep_unsat_equivalences,
|
|
551
|
+
percent (stats.sweep_unsat_equivalences,
|
|
552
|
+
stats.sweep_solved_equivalences));
|
|
553
|
+
PRT (" unknown: %15" PRId64 " %10.2f %% equiv solved",
|
|
554
|
+
stats.sweep_unknown_equivalences,
|
|
555
|
+
percent (stats.sweep_unknown_equivalences,
|
|
556
|
+
stats.sweep_solved_equivalences));
|
|
557
|
+
PRT (" flip: %15" PRId64 " %10.2f per swept variable",
|
|
558
|
+
stats.sweep_flip_equivalences,
|
|
559
|
+
relative (stats.sweep_flip_equivalences, stats.sweep_variables));
|
|
560
|
+
PRT (" flipped: %15" PRId64 " %10.2f %% of equiv flip",
|
|
561
|
+
stats.sweep_flipped_equivalences,
|
|
562
|
+
percent (stats.sweep_flipped_equivalences,
|
|
563
|
+
stats.sweep_flip_equivalences));
|
|
564
|
+
PRT (" depth: %15" PRId64 " %10.2f per swept variable",
|
|
565
|
+
stats.sweep_depth,
|
|
566
|
+
relative (stats.sweep_depth, stats.sweep_variables));
|
|
567
|
+
PRT (" environment: %15" PRId64 " %10.2f per swept variable",
|
|
568
|
+
stats.sweep_environment,
|
|
569
|
+
relative (stats.sweep_environment, stats.sweep_variables));
|
|
570
|
+
PRT (" clauses: %15" PRId64 " %10.2f per swept variable",
|
|
571
|
+
stats.sweep_clauses,
|
|
572
|
+
relative (stats.sweep_clauses, stats.sweep_variables));
|
|
573
|
+
PRT (" completed: %15" PRId64 " %10.2f sweeps to complete",
|
|
574
|
+
stats.sweep_completed,
|
|
575
|
+
relative (stats.sweep, stats.sweep_completed));
|
|
576
|
+
}
|
|
577
|
+
if (all || stats.subsumed) {
|
|
578
|
+
PRT ("subsumed: %15" PRId64 " %10.2f %% of all clauses",
|
|
579
|
+
stats.subsumed, percent (stats.subsumed, stats.added.total));
|
|
580
|
+
PRT (" subsumephases: %15" PRId64 " %10.2f interval",
|
|
581
|
+
stats.subsumephases,
|
|
582
|
+
relative (stats.conflicts, stats.subsumephases));
|
|
583
|
+
PRT (" subsumerounds: %15" PRId64 " %10.2f per phase",
|
|
584
|
+
stats.subsumerounds,
|
|
585
|
+
relative (stats.subsumerounds, stats.subsumephases));
|
|
586
|
+
PRT (" deduplicated: %15" PRId64 " %10.2f %% per subsumed",
|
|
587
|
+
stats.deduplicated, percent (stats.deduplicated, stats.subsumed));
|
|
588
|
+
PRT (" transreds: %15" PRId64 " %10.2f interval",
|
|
589
|
+
stats.transreds, relative (stats.conflicts, stats.transreds));
|
|
590
|
+
PRT (" transitive: %15" PRId64 " %10.2f %% per subsumed",
|
|
591
|
+
stats.transitive, percent (stats.transitive, stats.subsumed));
|
|
592
|
+
PRT (" subirr: %15" PRId64 " %10.2f %% of subsumed",
|
|
593
|
+
stats.subirr, percent (stats.subirr, stats.subsumed));
|
|
594
|
+
PRT (" subred: %15" PRId64 " %10.2f %% of subsumed",
|
|
595
|
+
stats.subred, percent (stats.subred, stats.subsumed));
|
|
596
|
+
PRT (" subtried: %15" PRId64 " %10.2f tried per subsumed",
|
|
597
|
+
stats.subtried, relative (stats.subtried, stats.subsumed));
|
|
598
|
+
PRT (" subchecks: %15" PRId64 " %10.2f per tried",
|
|
599
|
+
stats.subchecks, relative (stats.subchecks, stats.subtried));
|
|
600
|
+
PRT (" subchecks2: %15" PRId64 " %10.2f %% per subcheck",
|
|
601
|
+
stats.subchecks2, percent (stats.subchecks2, stats.subchecks));
|
|
602
|
+
PRT (" elimotfsub: %15" PRId64 " %10.2f %% of subsumed",
|
|
603
|
+
stats.elimotfsub, percent (stats.elimotfsub, stats.subsumed));
|
|
604
|
+
PRT (" elimbwsub: %15" PRId64 " %10.2f %% of subsumed",
|
|
605
|
+
stats.elimbwsub, percent (stats.elimbwsub, stats.subsumed));
|
|
606
|
+
PRT (" eagersub: %15" PRId64 " %10.2f %% of subsumed",
|
|
607
|
+
stats.eagersub, percent (stats.eagersub, stats.subsumed));
|
|
608
|
+
PRT (" eagertried: %15" PRId64 " %10.2f tried per eagersub",
|
|
609
|
+
stats.eagertried, relative (stats.eagertried, stats.eagersub));
|
|
610
|
+
}
|
|
611
|
+
if (all || stats.strengthened) {
|
|
612
|
+
PRT ("strengthened: %15" PRId64 " %10.2f %% of all clauses",
|
|
613
|
+
stats.strengthened,
|
|
614
|
+
percent (stats.strengthened, stats.added.total));
|
|
615
|
+
PRT (" elimotfstr: %15" PRId64 " %10.2f %% of strengthened",
|
|
616
|
+
stats.elimotfstr, percent (stats.elimotfstr, stats.strengthened));
|
|
617
|
+
PRT (" elimbwstr: %15" PRId64 " %10.2f %% of strengthened",
|
|
618
|
+
stats.elimbwstr, percent (stats.elimbwstr, stats.strengthened));
|
|
619
|
+
}
|
|
620
|
+
if (all || stats.htrs) {
|
|
621
|
+
PRT ("ternary: %15" PRId64 " %10.2f %% of resolved",
|
|
622
|
+
stats.htrs, percent (stats.htrs, stats.ternres));
|
|
623
|
+
PRT (" phases: %15" PRId64 " %10.2f interval",
|
|
624
|
+
stats.ternary, relative (stats.conflicts, stats.ternary));
|
|
625
|
+
PRT (" htr3: %15" PRId64
|
|
626
|
+
" %10.2f %% ternary hyper ternres",
|
|
627
|
+
stats.htrs3, percent (stats.htrs3, stats.htrs));
|
|
628
|
+
PRT (" htr2: %15" PRId64 " %10.2f %% binary hyper ternres",
|
|
629
|
+
stats.htrs2, percent (stats.htrs2, stats.htrs));
|
|
630
|
+
}
|
|
631
|
+
PRT ("ticks: %15" PRId64 " %10.2f propagation", totalticks,
|
|
632
|
+
relative (totalticks, stats.propagations.search));
|
|
633
|
+
PRT (" searchticks: %15" PRId64 " %10.2f %% totalticks",
|
|
634
|
+
searchticks, percent (searchticks, totalticks));
|
|
635
|
+
PRT (" stableticks: %15" PRId64 " %10.2f %% searchticks",
|
|
636
|
+
stats.ticks.search[1], percent (stats.ticks.search[1], searchticks));
|
|
637
|
+
PRT (" unstableticks:%15" PRId64 " %10.2f %% searchticks",
|
|
638
|
+
stats.ticks.search[0], percent (stats.ticks.search[0], searchticks));
|
|
639
|
+
PRT (" inprobeticks: %15" PRId64 " %10.2f %% totalticks",
|
|
640
|
+
inprobeticks, percent (inprobeticks, totalticks));
|
|
641
|
+
PRT (" backboneticks:%15" PRId64 " %10.2f %% searchticks",
|
|
642
|
+
stats.ticks.backbone, percent (stats.ticks.backbone, searchticks));
|
|
643
|
+
PRT (" factorticks: %15" PRId64 " %10.2f %% searchticks",
|
|
644
|
+
stats.ticks.factor, percent (stats.ticks.factor, searchticks));
|
|
645
|
+
PRT (" probeticks: %15" PRId64 " %10.2f %% searchticks",
|
|
646
|
+
stats.ticks.probe, percent (stats.ticks.probe, searchticks));
|
|
647
|
+
PRT (" sweepticks: %15" PRId64 " %10.2f %% searchticks",
|
|
648
|
+
stats.ticks.sweep, percent (stats.ticks.sweep, searchticks));
|
|
649
|
+
PRT (" ternaryticks: %15" PRId64 " %10.2f %% searchticks",
|
|
650
|
+
stats.ticks.ternary, percent (stats.ticks.ternary, searchticks));
|
|
651
|
+
PRT (" vivifyticks: %15" PRId64 " %10.2f %% searchticks",
|
|
652
|
+
stats.ticks.vivify, percent (stats.ticks.vivify, searchticks));
|
|
653
|
+
PRT (" walkticks: %15" PRId64 " %10.2f %% searchticks",
|
|
654
|
+
stats.ticks.walk, percent (stats.ticks.walk, searchticks));
|
|
655
|
+
PRT (" walkflipticks:%15" PRId64 " %10.2f %% searchticks",
|
|
656
|
+
stats.ticks.walkflip, percent (stats.ticks.walkflip, searchticks));
|
|
657
|
+
PRT (" walkflipbrk: %15" PRId64 " %10.2f %% searchticks",
|
|
658
|
+
stats.ticks.walkflipbroken,
|
|
659
|
+
percent (stats.ticks.walkflipbroken, searchticks));
|
|
660
|
+
PRT (" walkflipWL: %15" PRId64 " %10.2f %% searchticks",
|
|
661
|
+
stats.ticks.walkflipWL,
|
|
662
|
+
percent (stats.ticks.walkflipWL, searchticks));
|
|
663
|
+
PRT (" walkpickticks:%15" PRId64 " %10.2f %% searchticks",
|
|
664
|
+
stats.ticks.walkpick, percent (stats.ticks.walkpick, searchticks));
|
|
665
|
+
PRT (" walkbreak: %15" PRId64 " %10.2f %% searchticks",
|
|
666
|
+
stats.ticks.walkbreak, percent (stats.ticks.walkbreak, searchticks));
|
|
667
|
+
if (all) {
|
|
668
|
+
PRT ("tier recomputed: %15" PRId64 " %10.2f interval",
|
|
669
|
+
stats.tierecomputed,
|
|
670
|
+
relative (stats.conflicts, stats.tierecomputed));
|
|
671
|
+
}
|
|
672
|
+
if (all || stats.ilbtriggers) {
|
|
673
|
+
PRT ("trail reuses: %15" PRId64 " %10.2f %% of incremental calls",
|
|
674
|
+
stats.ilbsuccess, percent (stats.ilbsuccess, stats.ilbtriggers));
|
|
675
|
+
PRT (" levels: %15" PRId64 " %10.2f per reuse",
|
|
676
|
+
stats.levelsreused,
|
|
677
|
+
relative (stats.levelsreused, stats.ilbsuccess));
|
|
678
|
+
PRT (" literals: %15" PRId64 " %10.2f per reuse",
|
|
679
|
+
stats.literalsreused,
|
|
680
|
+
relative (stats.literalsreused, stats.ilbsuccess));
|
|
681
|
+
PRT (" assumptions: %15" PRId64 " %10.2f per reuse",
|
|
682
|
+
stats.assumptionsreused,
|
|
683
|
+
relative (stats.assumptionsreused, stats.ilbsuccess));
|
|
684
|
+
}
|
|
685
|
+
if (all || vivified) {
|
|
686
|
+
PRT ("vivified: %15" PRId64 " %10.2f %% of all clauses",
|
|
687
|
+
vivified, percent (vivified, stats.added.total));
|
|
688
|
+
PRT (" vivifications: %15" PRId64 " %10.2f interval",
|
|
689
|
+
stats.vivifications,
|
|
690
|
+
relative (stats.conflicts, stats.vivifications));
|
|
691
|
+
PRT (" vivifychecks: %15" PRId64 " %10.2f %% per conflict",
|
|
692
|
+
stats.vivifychecks, percent (stats.vivifychecks, stats.conflicts));
|
|
693
|
+
const int64_t vivified = stats.vivifiedtier1 + stats.vivifiedtier2 +
|
|
694
|
+
stats.vivifiedtier3 + stats.vivifiedirred;
|
|
695
|
+
PRT (" vivified: %15" PRId64 " %10.2f %% per check", vivified,
|
|
696
|
+
percent (vivified, stats.vivifychecks));
|
|
697
|
+
PRT (" vified-irred: %15" PRId64 " %10.2f %% per vivified",
|
|
698
|
+
stats.vivifiedirred, percent (stats.vivifiedirred, vivified));
|
|
699
|
+
PRT (" vified-tier1: %15" PRId64 " %10.2f %% per vivified",
|
|
700
|
+
stats.vivifiedtier1, percent (stats.vivifiedtier1, vivified));
|
|
701
|
+
PRT (" vified-tier2: %15" PRId64 " %10.2f %% per vivified",
|
|
702
|
+
stats.vivifiedtier2, percent (stats.vivifiedtier2, vivified));
|
|
703
|
+
PRT (" vified-tier3: %15" PRId64 " %10.2f %% per vivified",
|
|
704
|
+
stats.vivifiedtier3, percent (stats.vivifiedtier3, vivified));
|
|
705
|
+
PRT (" vivifysched: %15" PRId64 " %10.2f %% checks per scheduled",
|
|
706
|
+
stats.vivifysched,
|
|
707
|
+
percent (stats.vivifychecks, stats.vivifysched));
|
|
708
|
+
PRT (" vivifyunits: %15" PRId64 " %10.2f %% per vivify check",
|
|
709
|
+
stats.vivifyunits,
|
|
710
|
+
percent (stats.vivifyunits, stats.vivifychecks));
|
|
711
|
+
PRT (" vivifyinst: %15" PRId64 " %10.2f %% per vivify check",
|
|
712
|
+
stats.vivifyinst, percent (stats.vivifyinst, stats.vivifychecks));
|
|
713
|
+
PRT (" vivifysubs: %15" PRId64 " %10.2f %% per subsumed",
|
|
714
|
+
stats.vivifysubs, percent (stats.vivifysubs, stats.subsumed));
|
|
715
|
+
PRT (" vivifyflushed: %15" PRId64 " %10.2f %% per subsumed",
|
|
716
|
+
stats.vivifyflushed,
|
|
717
|
+
percent (stats.vivifyflushed, stats.subsumed));
|
|
718
|
+
PRT (" vivifysubred: %15" PRId64 " %10.2f %% per subs",
|
|
719
|
+
stats.vivifysubred,
|
|
720
|
+
percent (stats.vivifysubred, stats.vivifysubs));
|
|
721
|
+
PRT (" vivifysubirr: %15" PRId64 " %10.2f %% per subs",
|
|
722
|
+
stats.vivifysubirr,
|
|
723
|
+
percent (stats.vivifysubirr, stats.vivifysubs));
|
|
724
|
+
PRT (" vivifystrs: %15" PRId64 " %10.2f %% per strengthened",
|
|
725
|
+
stats.vivifystrs, percent (stats.vivifystrs, stats.strengthened));
|
|
726
|
+
PRT (" vivifystrirr: %15" PRId64 " %10.2f %% per vivifystrs",
|
|
727
|
+
stats.vivifystrirr,
|
|
728
|
+
percent (stats.vivifystrirr, stats.vivifystrs));
|
|
729
|
+
PRT (" vivifystred1: %15" PRId64 " %10.2f %% per vivifystrs",
|
|
730
|
+
stats.vivifystred1,
|
|
731
|
+
percent (stats.vivifystred1, stats.vivifystrs));
|
|
732
|
+
PRT (" vivifystred2: %15" PRId64 " %10.2f %% per viviyfstrs",
|
|
733
|
+
stats.vivifystred2,
|
|
734
|
+
percent (stats.vivifystred2, stats.vivifystrs));
|
|
735
|
+
PRT (" vivifystred3: %15" PRId64 " %10.2f %% per vivifystrs",
|
|
736
|
+
stats.vivifystred3,
|
|
737
|
+
percent (stats.vivifystred3, stats.vivifystrs));
|
|
738
|
+
PRT (" vivifydemote: %15" PRId64 " %10.2f %% per vivifystrs",
|
|
739
|
+
stats.vivifydemote,
|
|
740
|
+
percent (stats.vivifydemote, stats.vivifystrs));
|
|
741
|
+
PRT (" vivifydecs: %15" PRId64 " %10.2f per checks",
|
|
742
|
+
stats.vivifydecs, relative (stats.vivifydecs, stats.vivifychecks));
|
|
743
|
+
PRT (" vivifyreused: %15" PRId64
|
|
744
|
+
" %10.2f %% per non-reused decision",
|
|
745
|
+
stats.vivifyreused,
|
|
746
|
+
percent (stats.vivifyreused, stats.vivifydecs));
|
|
747
|
+
}
|
|
748
|
+
if (all || stats.walk.count) {
|
|
749
|
+
PRT ("walked: %15" PRId64 " %10.2f interval",
|
|
750
|
+
stats.walk.count, relative (stats.conflicts, stats.walk.count));
|
|
751
|
+
if (all || stats.warmup.count) {
|
|
752
|
+
PRT (" prop-warmup: %15" PRId64 " %10.2f per warmup",
|
|
753
|
+
stats.warmup.propagated,
|
|
754
|
+
relative (stats.warmup.propagated, stats.warmup.count));
|
|
755
|
+
PRT (" dec-warmup: %15" PRId64 " %10.2f per warmup",
|
|
756
|
+
stats.warmup.decision,
|
|
757
|
+
relative (stats.warmup.decision, stats.warmup.count));
|
|
758
|
+
PRT (" dummydec-w: %15" PRId64 " %10.2f per warmup",
|
|
759
|
+
stats.warmup.dummydecision,
|
|
760
|
+
relative (stats.warmup.dummydecision, stats.warmup.count));
|
|
761
|
+
PRT (" conflicts: %15" PRId64 " %10.2f per warmup",
|
|
762
|
+
stats.warmup.conflicts,
|
|
763
|
+
relative (stats.warmup.conflicts, stats.warmup.count));
|
|
764
|
+
PRT (" warmup: %15" PRId64 " %10.2f per walk",
|
|
765
|
+
stats.warmup.count,
|
|
766
|
+
relative (stats.warmup.count, stats.walk.count));
|
|
767
|
+
}
|
|
768
|
+
#ifndef QUIET
|
|
769
|
+
if (internal->profiles.walk.value > 0)
|
|
770
|
+
PRT (" flips: %15" PRId64 " %10.2f M per second",
|
|
771
|
+
stats.walk.flips,
|
|
772
|
+
relative (1e-6 * stats.walk.flips,
|
|
773
|
+
internal->profiles.walk.value));
|
|
774
|
+
else
|
|
775
|
+
#endif
|
|
776
|
+
PRT (" flips: %15" PRId64 " %10.2f per walk",
|
|
777
|
+
stats.walk.flips, relative (stats.walk.flips, stats.walk.count));
|
|
778
|
+
if (stats.walk.minimum < LONG_MAX)
|
|
779
|
+
PRT (" minimum: %15" PRId64 " %10.2f %% clauses",
|
|
780
|
+
stats.walk.minimum,
|
|
781
|
+
percent (stats.walk.minimum, stats.added.irredundant));
|
|
782
|
+
PRT (" broken: %15" PRId64 " %10.2f per flip",
|
|
783
|
+
stats.walk.broken, relative (stats.walk.broken, stats.walk.flips));
|
|
784
|
+
PRT (" improved: %15" PRId64 " %10.2f per walk",
|
|
785
|
+
stats.walk.improved,
|
|
786
|
+
relative (stats.walk.improved, stats.walk.count));
|
|
787
|
+
}
|
|
788
|
+
if (all || stats.weakened) {
|
|
789
|
+
PRT ("weakened: %15" PRId64 " %10.2f average size",
|
|
790
|
+
stats.weakened, relative (stats.weakenedlen, stats.weakened));
|
|
791
|
+
PRT (" extensions: %15" PRId64 " %10.2f interval",
|
|
792
|
+
stats.extensions, relative (stats.conflicts, stats.extensions));
|
|
793
|
+
PRT (" flipped: %15" PRId64 " %10.2f per weakened",
|
|
794
|
+
stats.extended, relative (stats.extended, stats.weakened));
|
|
795
|
+
}
|
|
796
|
+
|
|
797
|
+
if (all || stats.congruence.gates) {
|
|
798
|
+
PRT ("congruence: %15" PRId64 " %10.2f interval",
|
|
799
|
+
stats.congruence.rounds,
|
|
800
|
+
relative (stats.conflicts, stats.congruence.rounds));
|
|
801
|
+
PRT (" units: %15" PRId64 " %10.2f per congruent",
|
|
802
|
+
stats.congruence.units,
|
|
803
|
+
relative (stats.congruence.units, stats.congruence.congruent));
|
|
804
|
+
PRT (" cong-and: %15" PRId64 " %10.2f per found gates",
|
|
805
|
+
stats.congruence.ands,
|
|
806
|
+
relative (stats.congruence.ands, stats.congruence.gates));
|
|
807
|
+
PRT (" cong-ite: %15" PRId64 " %10.2f per found gates",
|
|
808
|
+
stats.congruence.ites,
|
|
809
|
+
relative (stats.congruence.ites, stats.congruence.gates));
|
|
810
|
+
PRT (" cong-xor: %15" PRId64 " %10.2f per found gates",
|
|
811
|
+
stats.congruence.xors,
|
|
812
|
+
relative (stats.congruence.xors, stats.congruence.gates));
|
|
813
|
+
PRT (" congruent: %15" PRId64 " %10.2f per round",
|
|
814
|
+
stats.congruence.congruent,
|
|
815
|
+
relative (stats.congruence.rounds, stats.congruence.congruent));
|
|
816
|
+
PRT (" unaries: %15" PRId64 " %10.2f per round",
|
|
817
|
+
stats.congruence.unaries,
|
|
818
|
+
relative (stats.congruence.rounds, stats.congruence.unaries));
|
|
819
|
+
int64_t rewritten = stats.congruence.rewritten_ands +
|
|
820
|
+
stats.congruence.rewritten_xors +
|
|
821
|
+
stats.congruence.rewritten_ites;
|
|
822
|
+
PRT (" rewritten: %15" PRId64 " %10.2f per round", rewritten,
|
|
823
|
+
percent (rewritten, stats.congruence.rounds));
|
|
824
|
+
PRT (" rewri.-ands: %15" PRId64 " %10.2f per rewritten",
|
|
825
|
+
stats.congruence.rewritten_ands,
|
|
826
|
+
percent (stats.congruence.rewritten_ands, rewritten));
|
|
827
|
+
PRT (" rewri.-xors: %15" PRId64 " %10.2f%% per rewritten",
|
|
828
|
+
stats.congruence.rewritten_xors,
|
|
829
|
+
percent (stats.congruence.rewritten_xors, rewritten));
|
|
830
|
+
PRT (" rewri.-ites: %15" PRId64 " %10.2f%% per rewritten",
|
|
831
|
+
stats.congruence.rewritten_ites,
|
|
832
|
+
percent (stats.congruence.rewritten_ites, rewritten));
|
|
833
|
+
PRT (" subsumed: %15" PRId64 " %10.2f%% per round",
|
|
834
|
+
stats.congruence.subsumed,
|
|
835
|
+
relative (stats.congruence.subsumed, stats.congruence.rounds));
|
|
836
|
+
}
|
|
837
|
+
|
|
838
|
+
LINE ();
|
|
839
|
+
MSG ("%sseconds are measured in %s time for solving%s",
|
|
840
|
+
tout.magenta_code (), internal->opts.realtime ? "real" : "process",
|
|
841
|
+
tout.normal_code ());
|
|
842
|
+
|
|
843
|
+
SECTION ("glue usage");
|
|
844
|
+
|
|
845
|
+
internal->print_tier_usage_statistics ();
|
|
846
|
+
|
|
847
|
+
#endif // ifndef QUIET
|
|
848
|
+
}
|
|
849
|
+
|
|
850
|
+
void Internal::print_resource_usage () {
|
|
851
|
+
#ifndef QUIET
|
|
852
|
+
SECTION ("resources");
|
|
853
|
+
uint64_t m = maximum_resident_set_size ();
|
|
854
|
+
MSG ("total process time since initialization: %12.2f seconds",
|
|
855
|
+
internal->process_time ());
|
|
856
|
+
MSG ("total real time since initialization: %12.2f seconds",
|
|
857
|
+
internal->real_time ());
|
|
858
|
+
MSG ("maximum resident set size of process: %12.2f MB",
|
|
859
|
+
m / (double) (1l << 20));
|
|
860
|
+
#endif
|
|
861
|
+
}
|
|
862
|
+
|
|
863
|
+
/*------------------------------------------------------------------------*/
|
|
864
|
+
|
|
865
|
+
void Checker::print_stats () {
|
|
866
|
+
|
|
867
|
+
if (!stats.added && !stats.deleted)
|
|
868
|
+
return;
|
|
869
|
+
|
|
870
|
+
SECTION ("checker statistics");
|
|
871
|
+
|
|
872
|
+
MSG ("checks: %15" PRId64 "", stats.checks);
|
|
873
|
+
MSG ("assumptions: %15" PRId64 " %10.2f per check",
|
|
874
|
+
stats.assumptions, relative (stats.assumptions, stats.checks));
|
|
875
|
+
MSG ("propagations: %15" PRId64 " %10.2f per check",
|
|
876
|
+
stats.propagations, relative (stats.propagations, stats.checks));
|
|
877
|
+
MSG ("original: %15" PRId64 " %10.2f %% of all clauses",
|
|
878
|
+
stats.original, percent (stats.original, stats.added));
|
|
879
|
+
MSG ("derived: %15" PRId64 " %10.2f %% of all clauses",
|
|
880
|
+
stats.derived, percent (stats.derived, stats.added));
|
|
881
|
+
MSG ("deleted: %15" PRId64 " %10.2f %% of all clauses",
|
|
882
|
+
stats.deleted, percent (stats.deleted, stats.added));
|
|
883
|
+
MSG ("insertions: %15" PRId64 " %10.2f %% of all clauses",
|
|
884
|
+
stats.insertions, percent (stats.insertions, stats.added));
|
|
885
|
+
MSG ("collections: %15" PRId64 " %10.2f deleted per collection",
|
|
886
|
+
stats.collections, relative (stats.collections, stats.deleted));
|
|
887
|
+
MSG ("collisions: %15" PRId64 " %10.2f per search",
|
|
888
|
+
stats.collisions, relative (stats.collisions, stats.searches));
|
|
889
|
+
MSG ("searches: %15" PRId64 "", stats.searches);
|
|
890
|
+
MSG ("units: %15" PRId64 "", stats.units);
|
|
891
|
+
}
|
|
892
|
+
|
|
893
|
+
void LratChecker::print_stats () {
|
|
894
|
+
|
|
895
|
+
if (!stats.added && !stats.deleted)
|
|
896
|
+
return;
|
|
897
|
+
|
|
898
|
+
SECTION ("lrat checker statistics");
|
|
899
|
+
|
|
900
|
+
MSG ("checks: %15" PRId64 "", stats.checks);
|
|
901
|
+
MSG ("insertions: %15" PRId64 " %10.2f %% of all clauses",
|
|
902
|
+
stats.insertions, percent (stats.insertions, stats.added));
|
|
903
|
+
MSG ("original: %15" PRId64 " %10.2f %% of all clauses",
|
|
904
|
+
stats.original, percent (stats.original, stats.added));
|
|
905
|
+
MSG ("derived: %15" PRId64 " %10.2f %% of all clauses",
|
|
906
|
+
stats.derived, percent (stats.derived, stats.added));
|
|
907
|
+
MSG ("rat: %15" PRId64 " %10.2f %% of derived clauses",
|
|
908
|
+
stats.rat, percent (stats.rat, stats.derived));
|
|
909
|
+
MSG ("deleted: %15" PRId64 " %10.2f %% of all clauses",
|
|
910
|
+
stats.deleted, percent (stats.deleted, stats.added));
|
|
911
|
+
MSG ("finalized: %15" PRId64 " %10.2f %% of all clauses",
|
|
912
|
+
stats.finalized, percent (stats.finalized, stats.added));
|
|
913
|
+
MSG ("collections: %15" PRId64 " %10.2f deleted per collection",
|
|
914
|
+
stats.collections, relative (stats.collections, stats.deleted));
|
|
915
|
+
MSG ("collisions: %15" PRId64 " %10.2f per search",
|
|
916
|
+
stats.collisions, relative (stats.collisions, stats.searches));
|
|
917
|
+
MSG ("searches: %15" PRId64 "", stats.searches);
|
|
918
|
+
}
|
|
919
|
+
|
|
920
|
+
} // namespace CaDiCaL
|