11 LOG (
"pushing 0 on extension stack");
15 const uint32_t higher_bits =
static_cast<int> (
id << 32);
16 const uint32_t lower_bits = (
id & (((int64_t) 1 << 32) - 1));
19 LOG (
"pushing id %" PRIu64
" = %d + %d",
id, higher_bits, lower_bits);
24 const int elit =
internal->externalize (ilit);
27 LOG (
"pushing clause literal %d on extension stack (internal %d)", elit,
33 const int elit =
internal->externalize (ilit);
36 LOG (
"pushing witness literal %d on extension stack (internal %d)", elit,
40 LOG (
"marking witness %d", elit);
57 for (
const auto &
lit : *c)
86 for (
const auto &elit : w) {
93 const uint32_t higher_bits =
static_cast<int> (
id << 32);
94 const uint32_t lower_bits = (
id & (((int64_t) 1 << 32) - 1));
98 for (
const auto &elit : c) {
124 "mapping internal %d assignments to %d assignments",
130 for (
unsigned i = 1; i <= (unsigned)
max_var; i++) {
131 const int ilit =
e2i[i];
134 if (i >=
vals.size ())
135 vals.resize (i + 1,
false);
142 "updated %" PRId64
" external assignments", updated);
144 "extending through extension stack of size %zd",
152 bool satisfied =
false;
155 while ((
lit = *--i)) {
163 LOG (
"id=%" PRId64, ((int64_t) *i << 32) + *(i - 1));
176 while ((
lit = *--i)) {
179 LOG (
"flipping blocking literal %d",
lit);
182 size_t idx = abs (
lit);
183 if (idx >=
vals.size ())
184 vals.resize (idx + 1,
false);
196 "flipped %" PRId64
" literals during extension", flipped);
217 ((int64_t) * (i - 1) << 32) +
static_cast<int64_t
> (*i);
251 ((int64_t) *i << 32) + static_cast<int64_t> (*(i + 1));
256 while (i != end && (
lit = *i++))
276 for (
int idx = 1; idx <=
max_var; idx++) {
280 model.push_back (
lit);
282 internal->proof->conclude_sat (model);
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
#define CADICAL_assert(ignore)
virtual bool witness(const std::vector< int > &clause, const std::vector< int > &witness, int64_t id=0)=0
bool traverse_witnesses_backward(WitnessIterator &)
void push_witness_literal_on_extension_stack(int ilit)
bool traverse_witnesses_forward(WitnessIterator &)
bool marked(const vector< bool > &map, int elit) const
void push_id_on_extension_stack(int64_t id)
void push_external_clause_and_witness_on_extension_stack(const vector< int > &clause, const vector< int > &witness, int64_t id)
void push_zero_on_extension_stack()
void push_clause_literal_on_extension_stack(int ilit)
void push_binary_clause_on_extension_stack(int64_t id, int witness, int other)
void init(int new_max_var, bool extension=false)
void push_clause_on_extension_stack(Clause *)