ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
promote.h
Go to the documentation of this file.
1#ifndef _promote_h_INCLUDED
2#define _promote_h_INCLUDED
3
4#include "internal.h"
5
6#include "global.h"
8
9void kissat_promote_clause (struct kissat *, clause *, unsigned new_glue);
10
11static inline unsigned kissat_recompute_glue (kissat *solver, clause *c,
12 unsigned limit) {
13 KISSAT_assert (limit);
14 KISSAT_assert (EMPTY_STACK (solver->promote));
15 unsigned res = 0;
16 for (all_literals_in_clause (lit, c)) {
18 const unsigned level = LEVEL (lit);
19 frame *frame = &FRAME (level);
20 if (frame->promote)
21 continue;
22 if (++res == limit)
23 break;
24 frame->promote = true;
25 PUSH_STACK (solver->promote, level);
26 }
27 for (all_stack (unsigned, level, solver->promote)) {
28 frame *frame = &FRAME (level);
30 frame->promote = false;
31 }
32 CLEAR_STACK (solver->promote);
33 return res;
34}
35
37
38#endif
#define ABC_NAMESPACE_HEADER_END
#define ABC_NAMESPACE_HEADER_START
NAMESPACES ///.
#define LEVEL(LIT)
Definition assign.h:34
#define all_stack(T, E, S)
Definition stack.h:94
#define EMPTY_STACK(S)
Definition stack.h:18
#define CLEAR_STACK(S)
Definition stack.h:50
#define PUSH_STACK(S, E)
Definition stack.h:39
#define FRAME(LEVEL)
Definition frames.h:33
#define all_literals_in_clause(LIT, C)
Definition clause.h:47
#define KISSAT_assert(ignore)
Definition global.h:13
#define solver
Definition kitten.c:211
ABC_NAMESPACE_HEADER_START void kissat_promote_clause(struct kissat *, clause *, unsigned new_glue)
Definition promote.c:7
int lit
Definition satVec.h:130
Definition frames.h:15
bool promote
Definition frames.h:16
#define VALUE(LIT)
Definition value.h:10