ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
fastassign.h
Go to the documentation of this file.
1#ifndef _fastassign_h_INCLUDED
2#define _fastassign_h_INCLUDED
3
4#define FAST_ASSIGN
5
6#include "inline.h"
7#include "inlineassign.h"
8
9#include "global.h"
11
12static inline void kissat_fast_binary_assign (
13 kissat *solver, const bool probing, const unsigned level, value *values,
14 assigned *assigned, unsigned lit, unsigned other) {
15 if (GET_OPTION (jumpreasons) && level && solver->classification.bigbig) {
16 unsigned other_idx = IDX (other);
17 struct assigned *a = assigned + other_idx;
18 if (a->binary) {
19 LOGBINARY (lit, other, "jumping %s reason", LOGLIT (lit));
20 INC (jumped_reasons);
21 other = a->reason;
22 }
23 }
24 kissat_fast_assign (solver, probing, level, values, assigned, true, lit,
25 other);
26 LOGBINARY (lit, other, "assign %s reason", LOGLIT (lit));
27}
28
29static inline void
30kissat_fast_assign_reference (kissat *solver, value *values,
31 assigned *assigned, unsigned lit,
32 reference ref, clause *reason) {
33 KISSAT_assert (reason == kissat_dereference_clause (solver, ref));
34 const unsigned level =
35 kissat_assignment_level (solver, values, assigned, lit, reason);
39 kissat_fast_assign (solver, solver->probing, level, values, assigned,
40 false, lit, ref);
41 LOGREF (ref, "assign %s reason", LOGLIT (lit));
42}
43
45
46#endif
#define ABC_NAMESPACE_HEADER_END
#define ABC_NAMESPACE_HEADER_START
NAMESPACES ///.
#define DECISION_REASON
Definition assign.h:9
#define UNIT_REASON
Definition assign.h:10
#define INC(NAME)
ABC_NAMESPACE_IMPL_START typedef signed char value
#define KISSAT_assert(ignore)
Definition global.h:13
#define solver
Definition kitten.c:211
#define LOGREF(...)
Definition logging.h:433
#define LOGBINARY(...)
Definition logging.h:442
#define LOGLIT(...)
Definition logging.hpp:99
#define GET_OPTION(N)
Definition options.h:295
ABC_NAMESPACE_HEADER_START typedef unsigned reference
Definition reference.h:9
int lit
Definition satVec.h:130
#define IDX(LIT)
Definition literal.h:28
bool binary
Definition assign.h:23
unsigned reason
Definition assign.h:28
unsigned level
Definition assign.h:19