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,31 @@
|
|
|
1
|
+
#ifdef PROFILE_MODE
|
|
2
|
+
|
|
3
|
+
#include "internal.hpp"
|
|
4
|
+
|
|
5
|
+
namespace CaDiCaL {
|
|
6
|
+
|
|
7
|
+
bool Internal::propagate_stable () {
|
|
8
|
+
assert (stable);
|
|
9
|
+
START (propstable);
|
|
10
|
+
bool res = propagate ();
|
|
11
|
+
STOP (propstable);
|
|
12
|
+
return res;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
void Internal::analyze_stable () {
|
|
16
|
+
assert (stable);
|
|
17
|
+
START (analyzestable);
|
|
18
|
+
analyze ();
|
|
19
|
+
STOP (analyzestable);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
int Internal::decide_stable () {
|
|
23
|
+
assert (stable);
|
|
24
|
+
return decide ();
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
}; // namespace CaDiCaL
|
|
28
|
+
|
|
29
|
+
#else
|
|
30
|
+
int stable_if_not_profile_mode_dummy;
|
|
31
|
+
#endif
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
#ifndef _stack_h_INCLUDED
|
|
2
|
+
#define _stack_h_INCLUDED
|
|
3
|
+
|
|
4
|
+
#include <stdlib.h>
|
|
5
|
+
|
|
6
|
+
#define STACK(TYPE) \
|
|
7
|
+
struct { \
|
|
8
|
+
TYPE *begin; \
|
|
9
|
+
TYPE *end; \
|
|
10
|
+
TYPE *allocated; \
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
#define FULL_STACK(S) ((S).end == (S).allocated)
|
|
14
|
+
#define EMPTY_STACK(S) ((S).begin == (S).end)
|
|
15
|
+
#define SIZE_STACK(S) ((size_t) ((S).end - (S).begin))
|
|
16
|
+
#define CAPACITY_STACK(S) ((size_t) ((S).allocated - (S).begin))
|
|
17
|
+
|
|
18
|
+
#define INIT_STACK(S) \
|
|
19
|
+
do { \
|
|
20
|
+
(S).begin = (S).end = (S).allocated = 0; \
|
|
21
|
+
} while (0)
|
|
22
|
+
|
|
23
|
+
#define TOP_STACK(S) (END_STACK (S)[assert (!EMPTY_STACK (S)), -1])
|
|
24
|
+
|
|
25
|
+
#define PEEK_STACK(S, N) \
|
|
26
|
+
(BEGIN_STACK (S)[assert ((N) < SIZE_STACK (S)), (N)])
|
|
27
|
+
|
|
28
|
+
#define POKE_STACK(S, N, E) \
|
|
29
|
+
do { \
|
|
30
|
+
PEEK_STACK (S, N) = (E); \
|
|
31
|
+
} while (0)
|
|
32
|
+
|
|
33
|
+
#define POP_STACK(S) (assert (!EMPTY_STACK (S)), *--(S).end)
|
|
34
|
+
|
|
35
|
+
#define PUSH_STACK(S, E) \
|
|
36
|
+
do { \
|
|
37
|
+
if (FULL_STACK (S)) \
|
|
38
|
+
ENLARGE_STACK (S); \
|
|
39
|
+
*(S).end++ = (E); \
|
|
40
|
+
} while (0)
|
|
41
|
+
|
|
42
|
+
#define BEGIN_STACK(S) (S).begin
|
|
43
|
+
|
|
44
|
+
#define END_STACK(S) (S).end
|
|
45
|
+
|
|
46
|
+
#define CLEAR_STACK(S) \
|
|
47
|
+
do { \
|
|
48
|
+
(S).end = (S).begin; \
|
|
49
|
+
} while (0)
|
|
50
|
+
|
|
51
|
+
#define RESIZE_STACK(S, NEW_SIZE) \
|
|
52
|
+
do { \
|
|
53
|
+
const size_t TMP_NEW_SIZE = (NEW_SIZE); \
|
|
54
|
+
assert (TMP_NEW_SIZE <= SIZE_STACK (S)); \
|
|
55
|
+
(S).end = (S).begin + TMP_NEW_SIZE; \
|
|
56
|
+
} while (0)
|
|
57
|
+
|
|
58
|
+
#define SET_END_OF_STACK(S, P) \
|
|
59
|
+
do { \
|
|
60
|
+
assert (BEGIN_STACK (S) <= (P)); \
|
|
61
|
+
assert ((P) <= END_STACK (S)); \
|
|
62
|
+
if ((P) == END_STACK (S)) \
|
|
63
|
+
break; \
|
|
64
|
+
(S).end = (P); \
|
|
65
|
+
} while (0)
|
|
66
|
+
|
|
67
|
+
#define RELEASE_STACK(S) \
|
|
68
|
+
do { \
|
|
69
|
+
DEALLOC ((S).begin, CAPACITY_STACK (S)); \
|
|
70
|
+
INIT_STACK (S); \
|
|
71
|
+
} while (0)
|
|
72
|
+
|
|
73
|
+
#define REMOVE_STACK(T, S, E) \
|
|
74
|
+
do { \
|
|
75
|
+
assert (!EMPTY_STACK (S)); \
|
|
76
|
+
T *END_REMOVE_STACK = END_STACK (S); \
|
|
77
|
+
T *P_REMOVE_STACK = BEGIN_STACK (S); \
|
|
78
|
+
while (*P_REMOVE_STACK != (E)) { \
|
|
79
|
+
P_REMOVE_STACK++; \
|
|
80
|
+
assert (P_REMOVE_STACK != END_REMOVE_STACK); \
|
|
81
|
+
} \
|
|
82
|
+
P_REMOVE_STACK++; \
|
|
83
|
+
while (P_REMOVE_STACK != END_REMOVE_STACK) { \
|
|
84
|
+
P_REMOVE_STACK[-1] = *P_REMOVE_STACK; \
|
|
85
|
+
P_REMOVE_STACK++; \
|
|
86
|
+
} \
|
|
87
|
+
(S).end--; \
|
|
88
|
+
} while (0)
|
|
89
|
+
|
|
90
|
+
#define all_stack(T, E, S) \
|
|
91
|
+
T E, *E##_PTR = BEGIN_STACK (S), *const E##_END = END_STACK (S); \
|
|
92
|
+
E##_PTR != E##_END && (E = *E##_PTR, true); \
|
|
93
|
+
++E##_PTR
|
|
94
|
+
|
|
95
|
+
#define all_pointers(T, E, S) \
|
|
96
|
+
T *E, *const *E##_PTR = BEGIN_STACK (S), \
|
|
97
|
+
*const *const E##_END = END_STACK (S); \
|
|
98
|
+
E##_PTR != E##_END && (E = *E##_PTR, true); \
|
|
99
|
+
++E##_PTR
|
|
100
|
+
|
|
101
|
+
// clang-format off
|
|
102
|
+
|
|
103
|
+
typedef STACK (char) chars;
|
|
104
|
+
typedef STACK (int) ints;
|
|
105
|
+
typedef STACK (size_t) sizes;
|
|
106
|
+
typedef STACK (unsigned) unsigneds;
|
|
107
|
+
|
|
108
|
+
// clang-format on
|
|
109
|
+
|
|
110
|
+
#endif
|