7static void adjust_imports_for_external_literal (
kissat *
solver,
12 import.extension =
false;
13 import.imported =
false;
14 import.eliminated =
false;
19static void adjust_exports_for_external_literal (
kissat *
solver,
22 struct import *
import = &PEEK_STACK (solver->import, eidx);
23 unsigned iidx =
solver->vars;
25 unsigned ilit = 2 * iidx;
27 import->imported =
true;
29 INC (variables_extension);
31 INC (variables_original);
34 LOG (
"importing %s external variable %u as internal literal %u",
35 extension ?
"extension" :
"original", eidx, ilit);
39 LOG (
"exporting internal variable %u as external literal %u", iidx, eidx);
42static inline unsigned import_literal (
kissat *
solver,
int elit,
44 const unsigned eidx =
ABS (elit);
45 adjust_imports_for_external_literal (
solver, eidx);
46 struct import *
import = &PEEK_STACK (solver->import, eidx);
63 return import_literal (
solver, elit,
false);
64 const unsigned eidx =
ABS (elit);
68 return import_literal (
solver, elit,
false);
70 adjust_imports_for_external_literal (
solver, other++);
75 ilit = import_literal (
solver, other,
false);
76 }
while (other++ < eidx);
88 LOG (
"can not get another external variable");
93 unsigned res = import_literal (
solver, eidx,
true);
95 struct import *
import = &PEEK_STACK (solver->import, imported);
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
#define POKE_STACK(S, N, E)
void kissat_activate_literal(kissat *solver, unsigned lit)
unsigned kissat_fresh_literal(kissat *solver)
unsigned kissat_import_literal(kissat *solver, int elit)
#define KISSAT_assert(ignore)
void kissat_enlarge_variables(kissat *solver, unsigned new_vars)
#define VALID_INTERNAL_LITERAL(LIT)
#define VALID_EXTERNAL_LITERAL(LIT)