1#ifndef _check_h_INCLUDED
2#define _check_h_INCLUDED
14void kissat_check_satisfying_assignment (
struct kissat *);
16typedef struct checker checker;
20void kissat_init_checker (
struct kissat *);
21void kissat_release_checker (
struct kissat *);
24void kissat_print_checker_statistics (
struct kissat *,
bool verbose);
27void kissat_add_unchecked_external (
struct kissat *,
size_t,
const int *);
29void kissat_check_and_add_binary (
struct kissat *,
unsigned,
unsigned);
30void kissat_check_and_add_clause (
struct kissat *,
struct clause *c);
31void kissat_check_and_add_empty (
struct kissat *);
32void kissat_check_and_add_internal (
struct kissat *,
size_t,
34void kissat_check_and_add_unit (
struct kissat *,
unsigned);
36void kissat_check_shrink_clause (
struct kissat *,
struct clause *,
37 unsigned remove,
unsigned keep);
39void kissat_remove_checker_binary (
struct kissat *,
unsigned,
unsigned);
40void kissat_remove_checker_clause (
struct kissat *,
struct clause *c);
41void kissat_remove_checker_external (
struct kissat *,
size_t,
const int *);
43void kissat_remove_checker_internal (
struct kissat *,
size_t,
46#define ADD_UNCHECKED_EXTERNAL(SIZE, LITS) \
48 if (GET_OPTION (check) > 1) \
49 kissat_add_unchecked_external (solver, (SIZE), (LITS)); \
52#define CHECK_AND_ADD_BINARY(A, B) \
54 if (GET_OPTION (check) > 1) \
55 kissat_check_and_add_binary (solver, (A), (B)); \
58#define CHECK_AND_ADD_TERNARY(A, B, C) \
60 if (GET_OPTION (check) > 1) { \
61 unsigned CLAUSE[3] = {(A), (B), (C)}; \
62 kissat_check_and_add_internal (solver, 3, CLAUSE); \
66#define CHECK_AND_ADD_CLAUSE(CLAUSE) \
68 if (GET_OPTION (check) > 1) \
69 kissat_check_and_add_clause (solver, (CLAUSE)); \
72#define CHECK_AND_ADD_EMPTY() \
74 if (GET_OPTION (check) > 1) \
75 kissat_check_and_add_empty (solver); \
78#define CHECK_AND_ADD_LITS(SIZE, LITS) \
80 if (GET_OPTION (check) > 1) \
81 kissat_check_and_add_internal (solver, (SIZE), (LITS)); \
84#define CHECK_AND_ADD_STACK(S) \
85 CHECK_AND_ADD_LITS (SIZE_STACK (S), BEGIN_STACK (S))
87#define CHECK_AND_ADD_UNIT(A) \
89 if (GET_OPTION (check) > 1) \
90 kissat_check_and_add_unit (solver, (A)); \
93#define CHECK_SHRINK_CLAUSE(C, REMOVE, KEEP) \
95 if (GET_OPTION (check) > 1) \
96 kissat_check_shrink_clause (solver, (C), (REMOVE), (KEEP)); \
99#define REMOVE_CHECKER_BINARY(A, B) \
101 if (GET_OPTION (check) > 1) \
102 kissat_remove_checker_binary (solver, (A), (B)); \
105#define REMOVE_CHECKER_TERNARY(A, B, C) \
107 if (GET_OPTION (check) > 1) { \
108 unsigned CLAUSE[3] = {(A), (B), (C)}; \
109 kissat_remove_checker_internal (solver, 3, CLAUSE); \
113#define REMOVE_CHECKER_CLAUSE(CLAUSE) \
115 if (GET_OPTION (check) > 1) \
116 kissat_remove_checker_clause (solver, (CLAUSE)); \
119#define REMOVE_CHECKER_LITS(SIZE, LITS) \
121 if (GET_OPTION (check) > 1) \
122 kissat_remove_checker_internal (solver, (SIZE), (LITS)); \
125#define REMOVE_CHECKER_STACK(S) \
127 if (GET_OPTION (check) > 1) \
128 kissat_remove_checker_internal (solver, SIZE_STACK (S), \
134#define ADD_UNCHECKED_EXTERNAL(...) \
137#define CHECK_AND_ADD_BINARY(...) \
140#define CHECK_AND_ADD_TERNARY(...) \
143#define CHECK_AND_ADD_CLAUSE(...) \
146#define CHECK_AND_ADD_EMPTY(...) \
149#define CHECK_AND_ADD_LITS(...) \
152#define CHECK_AND_ADD_STACK(...) \
155#define CHECK_AND_ADD_UNIT(...) \
158#define CHECK_SHRINK_CLAUSE(...) \
161#define REMOVE_CHECKER_BINARY(...) \
164#define REMOVE_CHECKER_TERNARY(...) \
167#define REMOVE_CHECKER_CLAUSE(...) \
170#define REMOVE_CHECKER_LITS(...) \
173#define REMOVE_CHECKER_STACK(...) \
#define ABC_NAMESPACE_HEADER_END
#define ABC_NAMESPACE_HEADER_START
NAMESPACES ///.