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.
Files changed (171) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +26 -0
  3. data/README.md +101 -0
  4. data/ext/cadical/cadical/LICENSE +28 -0
  5. data/ext/cadical/cadical/README.md +65 -0
  6. data/ext/cadical/cadical/VERSION +1 -0
  7. data/ext/cadical/cadical/src/analyze.cpp +1360 -0
  8. data/ext/cadical/cadical/src/arena.cpp +30 -0
  9. data/ext/cadical/cadical/src/arena.hpp +105 -0
  10. data/ext/cadical/cadical/src/assume.cpp +616 -0
  11. data/ext/cadical/cadical/src/averages.cpp +34 -0
  12. data/ext/cadical/cadical/src/averages.hpp +37 -0
  13. data/ext/cadical/cadical/src/backbone.cpp +631 -0
  14. data/ext/cadical/cadical/src/backtrack.cpp +177 -0
  15. data/ext/cadical/cadical/src/backward.cpp +231 -0
  16. data/ext/cadical/cadical/src/bins.cpp +22 -0
  17. data/ext/cadical/cadical/src/bins.hpp +22 -0
  18. data/ext/cadical/cadical/src/block.cpp +824 -0
  19. data/ext/cadical/cadical/src/block.hpp +37 -0
  20. data/ext/cadical/cadical/src/cadical.cpp +1026 -0
  21. data/ext/cadical/cadical/src/cadical.hpp +1419 -0
  22. data/ext/cadical/cadical/src/ccadical.cpp +208 -0
  23. data/ext/cadical/cadical/src/ccadical.h +74 -0
  24. data/ext/cadical/cadical/src/checker.cpp +649 -0
  25. data/ext/cadical/cadical/src/checker.hpp +173 -0
  26. data/ext/cadical/cadical/src/clause.cpp +689 -0
  27. data/ext/cadical/cadical/src/clause.hpp +190 -0
  28. data/ext/cadical/cadical/src/collect.cpp +545 -0
  29. data/ext/cadical/cadical/src/compact.cpp +550 -0
  30. data/ext/cadical/cadical/src/condition.cpp +940 -0
  31. data/ext/cadical/cadical/src/config.cpp +101 -0
  32. data/ext/cadical/cadical/src/config.hpp +20 -0
  33. data/ext/cadical/cadical/src/congruence.cpp +7880 -0
  34. data/ext/cadical/cadical/src/congruence.hpp +757 -0
  35. data/ext/cadical/cadical/src/constrain.cpp +64 -0
  36. data/ext/cadical/cadical/src/contract.cpp +27 -0
  37. data/ext/cadical/cadical/src/contract.hpp +139 -0
  38. data/ext/cadical/cadical/src/cover.cpp +704 -0
  39. data/ext/cadical/cadical/src/cover.hpp +34 -0
  40. data/ext/cadical/cadical/src/decide.cpp +347 -0
  41. data/ext/cadical/cadical/src/decompose.cpp +738 -0
  42. data/ext/cadical/cadical/src/decompose.hpp +23 -0
  43. data/ext/cadical/cadical/src/deduplicate.cpp +275 -0
  44. data/ext/cadical/cadical/src/definition.cpp +283 -0
  45. data/ext/cadical/cadical/src/delay.hpp +38 -0
  46. data/ext/cadical/cadical/src/drattracer.cpp +153 -0
  47. data/ext/cadical/cadical/src/drattracer.hpp +55 -0
  48. data/ext/cadical/cadical/src/elim.cpp +1171 -0
  49. data/ext/cadical/cadical/src/elim.hpp +53 -0
  50. data/ext/cadical/cadical/src/elimfast.cpp +570 -0
  51. data/ext/cadical/cadical/src/ema.cpp +95 -0
  52. data/ext/cadical/cadical/src/ema.hpp +68 -0
  53. data/ext/cadical/cadical/src/extend.cpp +289 -0
  54. data/ext/cadical/cadical/src/external.cpp +1034 -0
  55. data/ext/cadical/cadical/src/external.hpp +487 -0
  56. data/ext/cadical/cadical/src/external_propagate.cpp +1316 -0
  57. data/ext/cadical/cadical/src/factor.cpp +1011 -0
  58. data/ext/cadical/cadical/src/factor.hpp +54 -0
  59. data/ext/cadical/cadical/src/file.cpp +506 -0
  60. data/ext/cadical/cadical/src/file.hpp +210 -0
  61. data/ext/cadical/cadical/src/flags.cpp +135 -0
  62. data/ext/cadical/cadical/src/flags.hpp +93 -0
  63. data/ext/cadical/cadical/src/flip.cpp +269 -0
  64. data/ext/cadical/cadical/src/format.cpp +89 -0
  65. data/ext/cadical/cadical/src/format.hpp +36 -0
  66. data/ext/cadical/cadical/src/frattracer.cpp +277 -0
  67. data/ext/cadical/cadical/src/frattracer.hpp +67 -0
  68. data/ext/cadical/cadical/src/gates.cpp +766 -0
  69. data/ext/cadical/cadical/src/heap.hpp +212 -0
  70. data/ext/cadical/cadical/src/idruptracer.cpp +566 -0
  71. data/ext/cadical/cadical/src/idruptracer.hpp +112 -0
  72. data/ext/cadical/cadical/src/instantiate.cpp +365 -0
  73. data/ext/cadical/cadical/src/instantiate.hpp +45 -0
  74. data/ext/cadical/cadical/src/internal.cpp +1265 -0
  75. data/ext/cadical/cadical/src/internal.hpp +1941 -0
  76. data/ext/cadical/cadical/src/inttypes.hpp +34 -0
  77. data/ext/cadical/cadical/src/ipasir.cpp +47 -0
  78. data/ext/cadical/cadical/src/ipasir.h +37 -0
  79. data/ext/cadical/cadical/src/kitten.c +2599 -0
  80. data/ext/cadical/cadical/src/kitten.h +97 -0
  81. data/ext/cadical/cadical/src/level.hpp +33 -0
  82. data/ext/cadical/cadical/src/lidruptracer.cpp +657 -0
  83. data/ext/cadical/cadical/src/lidruptracer.hpp +122 -0
  84. data/ext/cadical/cadical/src/limit.cpp +146 -0
  85. data/ext/cadical/cadical/src/limit.hpp +168 -0
  86. data/ext/cadical/cadical/src/logging.cpp +214 -0
  87. data/ext/cadical/cadical/src/logging.hpp +98 -0
  88. data/ext/cadical/cadical/src/lookahead.cpp +520 -0
  89. data/ext/cadical/cadical/src/lratchecker.cpp +833 -0
  90. data/ext/cadical/cadical/src/lratchecker.hpp +168 -0
  91. data/ext/cadical/cadical/src/lrattracer.cpp +200 -0
  92. data/ext/cadical/cadical/src/lrattracer.hpp +61 -0
  93. data/ext/cadical/cadical/src/lucky.cpp +506 -0
  94. data/ext/cadical/cadical/src/message.cpp +218 -0
  95. data/ext/cadical/cadical/src/message.hpp +65 -0
  96. data/ext/cadical/cadical/src/minimize.cpp +224 -0
  97. data/ext/cadical/cadical/src/mobical.cpp +5588 -0
  98. data/ext/cadical/cadical/src/occs.cpp +52 -0
  99. data/ext/cadical/cadical/src/occs.hpp +36 -0
  100. data/ext/cadical/cadical/src/options.cpp +359 -0
  101. data/ext/cadical/cadical/src/options.hpp +442 -0
  102. data/ext/cadical/cadical/src/parse.cpp +471 -0
  103. data/ext/cadical/cadical/src/parse.hpp +75 -0
  104. data/ext/cadical/cadical/src/phases.cpp +56 -0
  105. data/ext/cadical/cadical/src/phases.hpp +19 -0
  106. data/ext/cadical/cadical/src/probe.cpp +990 -0
  107. data/ext/cadical/cadical/src/profile.cpp +107 -0
  108. data/ext/cadical/cadical/src/profile.hpp +283 -0
  109. data/ext/cadical/cadical/src/proof.cpp +691 -0
  110. data/ext/cadical/cadical/src/proof.hpp +125 -0
  111. data/ext/cadical/cadical/src/propagate.cpp +584 -0
  112. data/ext/cadical/cadical/src/queue.cpp +90 -0
  113. data/ext/cadical/cadical/src/queue.hpp +74 -0
  114. data/ext/cadical/cadical/src/radix.hpp +180 -0
  115. data/ext/cadical/cadical/src/random.cpp +207 -0
  116. data/ext/cadical/cadical/src/random.h +44 -0
  117. data/ext/cadical/cadical/src/random.hpp +98 -0
  118. data/ext/cadical/cadical/src/range.hpp +125 -0
  119. data/ext/cadical/cadical/src/reap.cpp +127 -0
  120. data/ext/cadical/cadical/src/reap.hpp +28 -0
  121. data/ext/cadical/cadical/src/reduce.cpp +278 -0
  122. data/ext/cadical/cadical/src/reluctant.hpp +82 -0
  123. data/ext/cadical/cadical/src/rephase.cpp +402 -0
  124. data/ext/cadical/cadical/src/report.cpp +313 -0
  125. data/ext/cadical/cadical/src/resources.cpp +160 -0
  126. data/ext/cadical/cadical/src/resources.hpp +16 -0
  127. data/ext/cadical/cadical/src/restart.cpp +178 -0
  128. data/ext/cadical/cadical/src/restore.cpp +267 -0
  129. data/ext/cadical/cadical/src/score.cpp +51 -0
  130. data/ext/cadical/cadical/src/score.hpp +16 -0
  131. data/ext/cadical/cadical/src/shrink.cpp +507 -0
  132. data/ext/cadical/cadical/src/signal.cpp +136 -0
  133. data/ext/cadical/cadical/src/signal.hpp +33 -0
  134. data/ext/cadical/cadical/src/solution.cpp +50 -0
  135. data/ext/cadical/cadical/src/solver.cpp +1871 -0
  136. data/ext/cadical/cadical/src/stable.cpp +31 -0
  137. data/ext/cadical/cadical/src/stack.h +110 -0
  138. data/ext/cadical/cadical/src/stats.cpp +920 -0
  139. data/ext/cadical/cadical/src/stats.hpp +418 -0
  140. data/ext/cadical/cadical/src/subsume.cpp +645 -0
  141. data/ext/cadical/cadical/src/sweep.cpp +1960 -0
  142. data/ext/cadical/cadical/src/sweep.hpp +61 -0
  143. data/ext/cadical/cadical/src/terminal.cpp +38 -0
  144. data/ext/cadical/cadical/src/terminal.hpp +96 -0
  145. data/ext/cadical/cadical/src/ternary.cpp +450 -0
  146. data/ext/cadical/cadical/src/testing.hpp +24 -0
  147. data/ext/cadical/cadical/src/tier.cpp +189 -0
  148. data/ext/cadical/cadical/src/tracer.hpp +186 -0
  149. data/ext/cadical/cadical/src/transred.cpp +253 -0
  150. data/ext/cadical/cadical/src/unstable.cpp +29 -0
  151. data/ext/cadical/cadical/src/util.cpp +129 -0
  152. data/ext/cadical/cadical/src/util.hpp +181 -0
  153. data/ext/cadical/cadical/src/var.cpp +39 -0
  154. data/ext/cadical/cadical/src/var.hpp +22 -0
  155. data/ext/cadical/cadical/src/veripbtracer.cpp +427 -0
  156. data/ext/cadical/cadical/src/veripbtracer.hpp +106 -0
  157. data/ext/cadical/cadical/src/version.cpp +107 -0
  158. data/ext/cadical/cadical/src/version.hpp +13 -0
  159. data/ext/cadical/cadical/src/vivify.cpp +1893 -0
  160. data/ext/cadical/cadical/src/vivify.hpp +50 -0
  161. data/ext/cadical/cadical/src/walk.cpp +1088 -0
  162. data/ext/cadical/cadical/src/walk.hpp +91 -0
  163. data/ext/cadical/cadical/src/walk_full_occs.cpp +966 -0
  164. data/ext/cadical/cadical/src/warmup.cpp +403 -0
  165. data/ext/cadical/cadical/src/watch.cpp +126 -0
  166. data/ext/cadical/cadical/src/watch.hpp +77 -0
  167. data/ext/cadical/cadical_ext.c +778 -0
  168. data/ext/cadical/extconf.rb +26 -0
  169. data/lib/cadical/version.rb +3 -0
  170. data/lib/cadical.rb +12 -0
  171. metadata +218 -0
@@ -0,0 +1,418 @@
1
+ #ifndef _stats_hpp_INCLUDED
2
+ #define _stats_hpp_INCLUDED
3
+
4
+ #include <cstdint>
5
+ #include <cstdlib>
6
+ #include <vector>
7
+
8
+ namespace CaDiCaL {
9
+
10
+ struct Internal;
11
+
12
+ struct Stats {
13
+
14
+ Internal *internal;
15
+
16
+ int64_t vars = 0; // internal initialized variables
17
+
18
+ int64_t conflicts = 0; // generated conflicts in 'propagate'
19
+ int64_t decisions = 0; // number of decisions in 'decide'
20
+ int64_t searches = 0; // number of calls to solver 'solve'
21
+
22
+ struct {
23
+ int64_t cover = 0; // propagated during covered clause elimination
24
+ int64_t instantiate = 0; // propagated during variable instantiation
25
+ int64_t probe = 0; // propagated during probing
26
+ int64_t search = 0; // propagated literals during search
27
+ int64_t transred = 0; // propagated during transitive reduction
28
+ int64_t vivify = 0; // propagated during vivification
29
+ int64_t backbone = 0; // propagated during backbones
30
+ } propagations;
31
+
32
+ struct {
33
+ int64_t search[2] = {0};
34
+ int64_t backbone = 0;
35
+ int64_t factor = 0;
36
+ int64_t probe = 0;
37
+ int64_t sweep = 0;
38
+ int64_t ternary = 0;
39
+ int64_t vivify = 0;
40
+ int64_t walk = 0;
41
+ int64_t walkflip = 0; // ticks added to approximate walk
42
+ int64_t walkflipbroken = 0; // ticks added to approximate walk
43
+ int64_t walkflipWL = 0; // ticks added to approximate walk
44
+ int64_t walkbreak = 0; // ticks added to approximate walk
45
+ int64_t walkpick = 0; // ticks added to approximate walk
46
+ } ticks;
47
+
48
+ struct {
49
+ int64_t ext_cb = 0; // number of times any external callback was called
50
+ int64_t eprop_call = 0; // number of times external_propagate was called
51
+ int64_t eprop_prop = 0; // number of times external propagate propagated
52
+ int64_t eprop_conf =
53
+ 0; // number of times ex-propagate was already falsified
54
+ int64_t eprop_expl =
55
+ 0; // number of times external propagate was explained
56
+ int64_t elearn_call =
57
+ 0; // number of times external clause learning was tried
58
+ int64_t elearned =
59
+ 0; // learned external clauses (incl. eprop explanations)
60
+ int64_t elearn_prop =
61
+ 0; // number of learned and propagating external clauses
62
+ int64_t elearn_conf =
63
+ 0; // number of learned and conflicting external clauses
64
+ int64_t echeck_call = 0; // number of checking found complete solutions
65
+ } ext_prop;
66
+
67
+ int64_t condassinit = 0; // initial assigned literals
68
+ int64_t condassirem = 0; // initial assigned literals for blocked
69
+ int64_t condassrem = 0; // remaining assigned literals for blocked
70
+ int64_t condassvars = 0; // sum of active variables at initial assignment
71
+ int64_t condautinit = 0; // initial literals in autarky part
72
+ int64_t condautrem = 0; // remaining literals in autarky part for blocked
73
+ int64_t condcands = 0; // globally blocked candidate clauses
74
+ int64_t condcondinit = 0; // initial literals in conditional part
75
+ int64_t condcondrem =
76
+ 0; // remaining literals in conditional part for blocked
77
+ int64_t conditioned = 0; // globally blocked clauses eliminated
78
+ int64_t conditionings = 0; // globally blocked clause eliminations
79
+ int64_t condprops = 0; // propagated unassigned literals
80
+
81
+ struct {
82
+ int64_t block = 0; // block marked literals
83
+ int64_t elim = 0; // elim marked variables
84
+ int64_t subsume = 0; // subsume marked variables
85
+ int64_t ternary = 0; // ternary marked variables
86
+ int64_t factor = 0;
87
+ } mark;
88
+
89
+ struct {
90
+ int64_t total = 0;
91
+ int64_t redundant = 0;
92
+ int64_t irredundant = 0;
93
+ } current, added; // Clauses.
94
+
95
+ struct {
96
+ double process = 0, real = 0;
97
+ } time;
98
+
99
+ struct {
100
+ int64_t count = 0; // number of covered clause elimination rounds
101
+ int64_t asymmetric = 0; // number of asymmetric tautologies in CCE
102
+ int64_t blocked = 0; // number of blocked covered tautologies
103
+ int64_t total = 0; // total number of eliminated clauses
104
+ } cover;
105
+
106
+ struct {
107
+ int64_t tried = 0;
108
+ int64_t succeeded = 0;
109
+ struct {
110
+ int64_t one = 0, zero = 0;
111
+ } constant, forward, backward;
112
+ struct {
113
+ int64_t positive = 0, negative = 0;
114
+ } horn;
115
+ } lucky;
116
+
117
+ struct {
118
+ int64_t total = 0; // total number of happened rephases
119
+ int64_t best = 0; // how often reset to best phases
120
+ int64_t flipped = 0; // how often reset phases by flipping
121
+ int64_t inverted = 0; // how often reset to inverted phases
122
+ int64_t original = 0; // how often reset to original phases
123
+ int64_t random = 0; // how often randomly reset phases
124
+ int64_t walk = 0; // phases improved through random walked
125
+ } rephased;
126
+
127
+ struct {
128
+ int64_t decision = 0;
129
+ int64_t dummydecision = 0;
130
+ int64_t conflicts = 0;
131
+ int64_t propagated = 0;
132
+ int64_t count = 0;
133
+ } warmup;
134
+
135
+ struct {
136
+ int64_t count = 0;
137
+ int64_t broken = 0;
138
+ int64_t flips = 0;
139
+ int64_t minimum = 0;
140
+ int64_t improved = 0;
141
+ } walk;
142
+
143
+ struct {
144
+ int64_t count = 0; // flushings of learned clauses counter
145
+ int64_t learned = 0; // flushed learned clauses
146
+ int64_t hyper = 0; // flushed hyper binary/ternary clauses
147
+ } flush;
148
+
149
+ int64_t compacts = 0; // number of compactifications
150
+ int64_t shuffled = 0; // shuffled queues and scores
151
+ int64_t restarts = 0; // actual number of happened restarts
152
+ int64_t restartlevels = 0; // levels at restart
153
+ int64_t restartstable = 0; // actual number of happened restarts
154
+ int64_t stabphases = 0; // number of stabilization phases
155
+ int64_t stabconflicts =
156
+ 0; // number of search conflicts during stabilizing
157
+ int64_t rescored = 0; // number of times scores were rescored
158
+ int64_t reused = 0; // number of reused trails
159
+ int64_t reusedlevels = 0; // reused levels at restart
160
+ int64_t reusedstable = 0; // number of reused trails during stabilizing
161
+ int64_t sections = 0; // 'section' counter
162
+ int64_t chrono = 0; // chronological backtracks
163
+ int64_t backtracks = 0; // number of backtracks
164
+ int64_t improvedglue = 0; // improved glue during bumping
165
+ int64_t promoted1 = 0; // promoted clauses to tier one
166
+ int64_t promoted2 = 0; // promoted clauses to tier two
167
+ int64_t bumped = 0; // seen and bumped variables in 'analyze'
168
+ int64_t recomputed = 0; // recomputed glues 'recompute_glue'
169
+ int64_t searched = 0; // searched decisions in 'decide'
170
+ int64_t reductions = 0; // 'reduce' counter
171
+ int64_t reduced = 0; // number of reduced clauses
172
+ int64_t reduced_sqrt = 0;
173
+ int64_t reduced_prct = 0;
174
+ int64_t collected = 0; // number of collected bytes
175
+ int64_t collections = 0; // number of garbage collections
176
+ int64_t hbrs = 0; // hyper binary resolvents
177
+ int64_t hbrsizes = 0; // sum of hyper resolved base clauses
178
+ int64_t hbreds = 0; // redundant hyper binary resolvents
179
+ int64_t hbrsubs = 0; // subsuming hyper binary resolvents
180
+ int64_t instried = 0; // number of tried instantiations
181
+ int64_t instantiated = 0; // number of successful instantiations
182
+ int64_t instrounds = 0; // number of instantiation rounds
183
+ int64_t subsumed = 0; // number of subsumed clauses
184
+ int64_t deduplicated = 0; // number of removed duplicated binary clauses
185
+ int64_t deduplicatedinit =
186
+ 0; // number of removed binary clauses initially
187
+ int64_t deduplicatedinitrounds =
188
+ 0; // number of removed binary clauses initially
189
+ int64_t deduplications = 0; // number of deduplication phases
190
+ int64_t strengthened = 0; // number of strengthened clauses
191
+
192
+ int64_t eliminated_equi =
193
+ 0; // number of successful equivalence eliminations
194
+ int64_t eliminated_and = 0; // number of successful AND gate eliminations
195
+ int64_t eliminated_ite = 0; // number of successful ITE gate eliminations
196
+ int64_t eliminated_xor = 0; // number of successful XOR gate eliminations
197
+ int64_t eliminated_def =
198
+ 0; // number of successful definition eliminations
199
+
200
+ int64_t definitions_checked = 0;
201
+ int64_t definitions_extracted = 0;
202
+ int64_t definition_units = 0;
203
+ int64_t definition_ticks = 0;
204
+
205
+ int64_t factor = 0;
206
+ int64_t factored = 0;
207
+ int64_t factor_added = 0;
208
+ int64_t variables_extension = 0;
209
+ int64_t variables_original = 0;
210
+ int64_t literals_factored = 0;
211
+ int64_t clauses_unfactored = 0;
212
+ int64_t literals_unfactored = 0;
213
+
214
+ int64_t elimotfstr =
215
+ 0; // number of on-the-fly strengthened during elimination
216
+ int64_t subirr = 0; // number of subsumed irredundant clauses
217
+ int64_t subred = 0; // number of subsumed redundant clauses
218
+ int64_t subtried = 0; // number of tried subsumptions
219
+ int64_t subchecks = 0; // number of pair-wise subsumption checks
220
+ int64_t subchecks2 = 0; // same but restricted to binary clauses
221
+ int64_t elimotfsub =
222
+ 0; // number of on-the-fly subsumed during elimination
223
+ int64_t subsumerounds = 0; // number of subsumption rounds
224
+ int64_t subsumephases = 0; // number of scheduled subsumption phases
225
+ int64_t eagertried = 0; // number of traversed eager subsumed candidates
226
+ int64_t eagersub =
227
+ 0; // number of eagerly subsumed recently learned clauses
228
+ int64_t elimres = 0; // number of resolved clauses in BVE
229
+ int64_t elimrestried = 0; // number of tried resolved clauses in BVE
230
+ int64_t elimfastrounds = 0; // number of elimination rounds
231
+ int64_t elimrounds = 0; // number of elimination rounds
232
+ int64_t elimphases = 0; // number of scheduled elimination phases
233
+ int64_t elimfastphases = 0; // number of scheduled elimination phases
234
+ int64_t elimcompleted = 0; // number complete elimination procedures
235
+ int64_t elimtried = 0; // number of variable elimination attempts
236
+ int64_t elimsubst = 0; // number of eliminations through substitutions
237
+ int64_t elimgates = 0; // number of gates found during elimination
238
+ int64_t elimequivs = 0; // number of equivalences found during elimination
239
+ int64_t elimands = 0; // number of AND gates found during elimination
240
+ int64_t elimites = 0; // number of ITE gates found during elimination
241
+ int64_t elimxors = 0; // number of XOR gates found during elimination
242
+ int64_t elimbwsub = 0; // number of eager backward subsumed clauses
243
+ int64_t elimbwstr = 0; // number of eager backward strengthened clauses
244
+ int64_t ternary = 0; // number of ternary resolution phases
245
+ int64_t ternres = 0; // number of ternary resolutions
246
+ int64_t htrs = 0; // number of hyper ternary resolvents
247
+ int64_t htrs2 = 0; // number of binary hyper ternary resolvents
248
+ int64_t htrs3 = 0; // number of ternary hyper ternary resolvents
249
+ int64_t decompositions = 0; // number of SCC + ELS
250
+ int64_t vivifications = 0; // number of vivifications
251
+ int64_t vivifychecks = 0; // checked clauses during vivification
252
+ int64_t vivifiedirred =
253
+ 0; // irredundant vivified clauses during vivification
254
+ int64_t vivifiedtier1 = 0; // tier-1 vivified clauses during vivification
255
+ int64_t vivifiedtier2 = 0; // tier-2 vivified clauses during vivification
256
+ int64_t vivifiedtier3 = 0; // tier-3 vivified clauses during vivification
257
+ int64_t vivifydecs = 0; // vivification decisions
258
+ int64_t vivifyflushed =
259
+ 0; // subsumed clauses during sorting in vivification
260
+ int64_t vivifyreused = 0; // reused vivification decisions
261
+ int64_t vivifysched = 0; // scheduled clauses for vivification
262
+ int64_t vivifysubs = 0; // subsumed clauses during vivification
263
+ int64_t vivifysubred = 0; // subsumed clauses during vivification
264
+ int64_t vivifysubirr = 0; // subsumed clauses during vivification
265
+ int64_t vivifystrs = 0; // strengthened clauses during vivification
266
+ int64_t vivifystrirr = 0; // strengthened irredundant clause
267
+ int64_t vivifystred1 = 0; // strengthened redundant clause (1)
268
+ int64_t vivifystred2 = 0; // strengthened redundant clause (2)
269
+ int64_t vivifystred3 = 0; // strengthened redundant clause (3)
270
+ int64_t vivifyunits = 0; // units during vivification
271
+ int64_t vivifyimplied = 0; // implied during vivification
272
+ int64_t vivifyinst = 0; // instantiation during vivification
273
+ int64_t vivifydemote = 0; // demoting during vivification
274
+ int64_t transreds = 0;
275
+ int64_t transitive = 0;
276
+ struct {
277
+ int64_t literals = 0;
278
+ int64_t clauses = 0;
279
+ } learned;
280
+ int64_t minimized = 0; // minimized literals
281
+ int64_t shrunken = 0; // shrunken literals
282
+ int64_t minishrunken = 0; // shrunken during minimization literals
283
+
284
+ int64_t irrlits = 0; // literals in irredundant clauses
285
+ struct {
286
+ int64_t bytes = 0;
287
+ int64_t clauses = 0;
288
+ int64_t literals = 0;
289
+ } garbage;
290
+
291
+ int64_t sweep_units = 0;
292
+ int64_t sweep_flip_backbone = 0;
293
+ int64_t sweep_fixed_backbone = 0;
294
+ int64_t sweep_flipped_backbone = 0;
295
+ int64_t sweep_solved_backbone = 0;
296
+ int64_t sweep_sat_backbone = 0;
297
+ int64_t sweep_unsat_backbone = 0;
298
+ int64_t sweep_unknown_backbone = 0;
299
+ int64_t sweep_flip_equivalences = 0;
300
+ int64_t sweep_flipped_equivalences = 0;
301
+ int64_t sweep_sat_equivalences = 0;
302
+ int64_t sweep_unsat_equivalences = 0;
303
+ int64_t sweep_unknown_equivalences = 0;
304
+ int64_t sweep_solved_equivalences = 0;
305
+ int64_t sweep_equivalences = 0;
306
+ int64_t sweep_variables = 0;
307
+ int64_t sweep_completed = 0;
308
+ int64_t sweep_solved = 0;
309
+ int64_t sweep_sat = 0;
310
+ int64_t sweep_unsat = 0;
311
+ int64_t sweep_depth = 0;
312
+ int64_t sweep_environment = 0;
313
+ int64_t sweep_clauses = 0;
314
+ int64_t sweep = 0;
315
+
316
+ int64_t units = 0; // learned unit clauses
317
+ int64_t binaries = 0; // learned binary clauses
318
+ int64_t inprobingphases = 0; // number of scheduled probing phases
319
+ int64_t probingrounds = 0; // number of probing rounds
320
+ int64_t inprobesuccess = 0; // number successful probing phases
321
+ int64_t probed = 0; // number of probed literals
322
+ int64_t failed = 0; // number of failed literals
323
+ int64_t hyperunary = 0; // hyper unary resolved unit clauses
324
+ int64_t probefailed = 0; // failed literals from probing
325
+ int64_t transredunits = 0; // units derived in transitive reduction
326
+ int64_t blockings = 0; // number of blocked clause eliminations
327
+ int64_t blocked = 0; // number of actually blocked clauses
328
+ int64_t blockres = 0; // number of resolutions during blocking
329
+ int64_t blockcands = 0; // number of clause / pivot pairs tried
330
+ int64_t blockpured = 0; // number of clauses blocked through pure literals
331
+ int64_t blockpurelits = 0; // number of pure literals
332
+ int64_t extensions = 0; // number of extended witnesses
333
+ int64_t extended = 0; // number of flipped literals during extension
334
+ int64_t weakened = 0; // number of clauses pushed to extension stack
335
+ int64_t weakenedlen = 0; // lengths of weakened clauses
336
+ int64_t restorations = 0; // number of restore calls
337
+ int64_t restored = 0; // number of restored clauses
338
+ int64_t reactivated = 0; // number of reactivated clauses
339
+ int64_t restoredlits = 0; // number of restored literals
340
+
341
+ int64_t preprocessings = 0;
342
+
343
+ int64_t ilbtriggers = 0;
344
+ int64_t ilbsuccess = 0;
345
+ int64_t levelsreused = 0;
346
+ int64_t literalsreused = 0;
347
+ int64_t assumptionsreused = 0;
348
+ int64_t tierecomputed = 0; // number of tier recomputation;
349
+
350
+ struct {
351
+ int64_t fixed = 0; // number of top level assigned variables
352
+ int64_t eliminated = 0; // number of eliminated variables
353
+ int64_t fasteliminated = 0; // number of fast eliminated variables only
354
+ int64_t substituted = 0; // number of substituted variables
355
+ int64_t pure = 0; // number of pure literals
356
+ } all, now;
357
+
358
+ struct {
359
+ int64_t strengthened = 0; // number of clauses strengthened during OTFS
360
+ int64_t subsumed = 0; // number of clauses subsumed by OTFS
361
+ } otfs;
362
+
363
+ int64_t unused = 0; // number of unused variables
364
+ int64_t active = 0; // number of active variables
365
+ int64_t inactive = 0; // number of inactive variables
366
+
367
+ int64_t incremental_decay = 0;
368
+ struct {
369
+ int64_t random_decisions = 0; // number of random decisions
370
+ int64_t random_decision_phases =
371
+ 0; // number of phases of random decision
372
+ } randec;
373
+
374
+ std::vector<uint64_t> bump_used = {0, 0};
375
+ std::vector<std::vector<uint64_t>> used; // used clauses in focused mode
376
+
377
+ struct {
378
+ int64_t gates = 0;
379
+ int64_t and_gates = 0;
380
+ int64_t ands = 0;
381
+ int64_t ite_gates = 0;
382
+ int64_t ites = 0;
383
+ int64_t xor_gates = 0;
384
+ int64_t xors = 0;
385
+ int64_t units = 0;
386
+ int64_t congruent = 0;
387
+ int64_t rounds = 0;
388
+ int64_t unary_and = 0;
389
+ int64_t unaries = 0;
390
+ int64_t rewritten_ands = 0;
391
+ int64_t rewritten_xors = 0;
392
+ int64_t rewritten_ites = 0;
393
+ int64_t simplified = 0;
394
+ int64_t simplified_ands = 0;
395
+ int64_t simplified_xors = 0;
396
+ int64_t simplified_ites = 0;
397
+ int64_t subsumed = 0;
398
+ int64_t trivial_ite = 0;
399
+ int64_t unary_ites = 0;
400
+ } congruence;
401
+
402
+ struct {
403
+ int64_t rounds = 0;
404
+ int64_t units = 0;
405
+ int64_t phases = 0;
406
+ int64_t probes = 0;
407
+ } backbone;
408
+
409
+ Stats ();
410
+
411
+ void print (Internal *);
412
+ };
413
+
414
+ /*------------------------------------------------------------------------*/
415
+
416
+ } // namespace CaDiCaL
417
+
418
+ #endif