1#ifndef _proof_h_INCLUDED
2#define _proof_h_INCLUDED
12typedef struct proof proof;
17void kissat_init_proof (
struct kissat *,
struct file *,
bool binary);
18void kissat_release_proof (
struct kissat *);
21void kissat_print_proof_statistics (
struct kissat *,
bool verbose);
24void kissat_add_binary_to_proof (
struct kissat *,
unsigned,
unsigned);
25void kissat_add_clause_to_proof (
struct kissat *,
const struct clause *c);
26void kissat_add_empty_to_proof (
struct kissat *);
27void kissat_add_lits_to_proof (
struct kissat *,
size_t,
const unsigned *);
28void kissat_add_unit_to_proof (
struct kissat *,
unsigned);
30void kissat_shrink_clause_in_proof (
struct kissat *,
const struct clause *,
31 unsigned remove,
unsigned keep);
33void kissat_delete_binary_from_proof (
struct kissat *,
unsigned,
unsigned);
34void kissat_delete_clause_from_proof (
struct kissat *,
36void kissat_delete_external_from_proof (
struct kissat *,
size_t,
38void kissat_delete_internal_from_proof (
struct kissat *,
size_t,
41#define ADD_BINARY_TO_PROOF(A, B) \
44 kissat_add_binary_to_proof (solver, (A), (B)); \
47#define ADD_TERNARY_TO_PROOF(A, B, C) \
49 if (solver->proof) { \
50 unsigned CLAUSE[3] = {(A), (B), (C)}; \
51 kissat_add_lits_to_proof (solver, 3, CLAUSE); \
55#define ADD_CLAUSE_TO_PROOF(CLAUSE) \
58 kissat_add_clause_to_proof (solver, (CLAUSE)); \
61#define ADD_EMPTY_TO_PROOF() \
64 kissat_add_empty_to_proof (solver); \
67#define ADD_LITS_TO_PROOF(SIZE, LITS) \
70 kissat_add_lits_to_proof (solver, (SIZE), (LITS)); \
73#define ADD_STACK_TO_PROOF(S) \
74 ADD_LITS_TO_PROOF (SIZE_STACK (S), BEGIN_STACK (S))
76#define ADD_UNIT_TO_PROOF(A) \
79 kissat_add_unit_to_proof (solver, (A)); \
82#define SHRINK_CLAUSE_IN_PROOF(C, REMOVE, KEEP) \
85 kissat_shrink_clause_in_proof (solver, (C), (REMOVE), (KEEP)); \
88#define DELETE_BINARY_FROM_PROOF(A, B) \
91 kissat_delete_binary_from_proof (solver, (A), (B)); \
94#define DELETE_TERNARY_FROM_PROOF(A, B, C) \
96 if (solver->proof) { \
97 unsigned CLAUSE[3] = {(A), (B), (C)}; \
98 kissat_delete_internal_from_proof (solver, 3, CLAUSE); \
102#define DELETE_CLAUSE_FROM_PROOF(CLAUSE) \
105 kissat_delete_clause_from_proof (solver, (CLAUSE)); \
108#define DELETE_LITS_FROM_PROOF(SIZE, LITS) \
111 kissat_delete_internal_from_proof (solver, (SIZE), (LITS)); \
114#define DELETE_STACK_FROM_PROOF(S) \
117 kissat_delete_internal_from_proof (solver, SIZE_STACK (S), \
123#define ADD_BINARY_TO_PROOF(...) \
126#define ADD_TERNARY_TO_PROOF(...) \
129#define ADD_CLAUSE_TO_PROOF(...) \
132#define ADD_LITS_TO_PROOF(...) \
135#define ADD_EMPTY_TO_PROOF(...) \
138#define ADD_STACK_TO_PROOF(...) \
141#define ADD_UNIT_TO_PROOF(...) \
145#define SHRINK_CLAUSE_IN_PROOF(...) \
149#define DELETE_BINARY_FROM_PROOF(...) \
152#define DELETE_TERNARY_FROM_PROOF(...) \
155#define DELETE_CLAUSE_FROM_PROOF(...) \
158#define DELETE_LITS_FROM_PROOF(...) \
161#define DELETE_STACK_FROM_PROOF(...) \
#define ABC_NAMESPACE_HEADER_END
#define ABC_NAMESPACE_HEADER_START
NAMESPACES ///.