ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
assign.h File Reference
#include <stdbool.h>
#include "global.h"
#include "reference.h"
Include dependency graph for assign.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  assigned
 

Macros

#define DECISION_REASON   UINT_MAX
 
#define UNIT_REASON   (DECISION_REASON - 1)
 
#define INVALID_LEVEL   UINT_MAX
 
#define INVALID_TRAIL   UINT_MAX
 
#define ASSIGNED(LIT)
 
#define LEVEL(LIT)
 
#define TRAIL(LIT)
 
#define REASON(LIT)
 

Typedefs

typedef struct assigned assigned
 

Functions

void kissat_assign_unit (struct kissat *, unsigned lit, const char *)
 
void kissat_learned_unit (struct kissat *, unsigned lit)
 
void kissat_original_unit (struct kissat *, unsigned lit)
 
void kissat_assign_decision (struct kissat *, unsigned lit)
 
void kissat_assign_binary (struct kissat *, unsigned, unsigned)
 
void kissat_assign_reference (struct kissat *, unsigned lit, reference, struct clause *)
 

Macro Definition Documentation

◆ ASSIGNED

#define ASSIGNED ( LIT)
Value:
#define KISSAT_assert(ignore)
Definition global.h:13
#define solver
Definition kitten.c:211
#define LIT(IDX)
Definition literal.h:31
#define VALID_INTERNAL_LITERAL(LIT)
Definition literal.h:23
#define IDX(LIT)
Definition literal.h:28

Definition at line 31 of file assign.h.

31#define ASSIGNED(LIT) \
32 (KISSAT_assert (VALID_INTERNAL_LITERAL (LIT)), solver->assigned + IDX (LIT))

◆ DECISION_REASON

#define DECISION_REASON   UINT_MAX

Definition at line 9 of file assign.h.

◆ INVALID_LEVEL

#define INVALID_LEVEL   UINT_MAX

Definition at line 12 of file assign.h.

◆ INVALID_TRAIL

#define INVALID_TRAIL   UINT_MAX

Definition at line 13 of file assign.h.

◆ LEVEL

#define LEVEL ( LIT)
Value:
(ASSIGNED (LIT)->level)
#define ASSIGNED(LIT)
Definition assign.h:31

Definition at line 34 of file assign.h.

◆ REASON

#define REASON ( LIT)
Value:
(ASSIGNED (LIT)->reason)

Definition at line 36 of file assign.h.

◆ TRAIL

#define TRAIL ( LIT)
Value:
(ASSIGNED (LIT)->trail)

Definition at line 35 of file assign.h.

◆ UNIT_REASON

#define UNIT_REASON   (DECISION_REASON - 1)

Definition at line 10 of file assign.h.

Typedef Documentation

◆ assigned

typedef struct assigned assigned

Definition at line 15 of file assign.h.

Function Documentation

◆ kissat_assign_binary()

void kissat_assign_binary ( struct kissat * solver,
unsigned lit,
unsigned other )

Definition at line 34 of file assign.c.

34 {
35 KISSAT_assert (VALUE (other) < 0);
36 assigned *assigned = solver->assigned;
37 const unsigned other_idx = IDX (other);
38 struct assigned *a = assigned + other_idx;
39 unsigned level = a->level;
40 if (GET_OPTION (jumpreasons) && level && a->binary) {
41 LOGBINARY (lit, other, "jumping %s reason", LOGLIT (lit));
42 INC (jumped_reasons);
43 other = a->reason;
44 }
45 kissat_assign (solver, solver->probing, a->level, true, lit, other);
46 LOGBINARY (lit, other, "assign %s reason", LOGLIT (lit));
47}
#define INC(NAME)
#define LOGBINARY(...)
Definition logging.h:442
#define LOGLIT(...)
Definition logging.hpp:99
#define GET_OPTION(N)
Definition options.h:295
int lit
Definition satVec.h:130
bool binary
Definition assign.h:23
unsigned reason
Definition assign.h:28
unsigned level
Definition assign.h:19
#define VALUE(LIT)
Definition value.h:10
Here is the caller graph for this function:

◆ kissat_assign_decision()

void kissat_assign_decision ( struct kissat * solver,
unsigned lit )

Definition at line 28 of file assign.c.

28 {
29 kissat_assign (solver, solver->probing, solver->level, false, lit,
31 LOG ("assign %s decision", LOGLIT (lit));
32}
#define DECISION_REASON
Definition assign.h:9
#define LOG(...)
Here is the caller graph for this function:

◆ kissat_assign_reference()

void kissat_assign_reference ( struct kissat * solver,
unsigned lit,
reference ref,
struct clause * reason )

Definition at line 49 of file assign.c.

50 {
51 KISSAT_assert (reason == kissat_dereference_clause (solver, ref));
52 assigned *assigned = solver->assigned;
53 value *values = solver->values;
54 const unsigned level =
55 kissat_assignment_level (solver, values, assigned, lit, reason);
56 KISSAT_assert (level <= solver->level);
59 kissat_assign (solver, solver->probing, level, false, lit, ref);
60 LOGREF (ref, "assign %s reason", LOGLIT (lit));
61}
#define UNIT_REASON
Definition assign.h:10
ABC_NAMESPACE_IMPL_START typedef signed char value
#define LOGREF(...)
Definition logging.h:433
Here is the caller graph for this function:

◆ kissat_assign_unit()

void kissat_assign_unit ( struct kissat * solver,
unsigned lit,
const char * reason )

Definition at line 10 of file assign.c.

10 {
11 kissat_assign (solver, solver->probing, 0, false, lit, UNIT_REASON);
12 LOGUNARY (lit, "assign %s %s", LOGLIT (lit), reason);
13#ifndef LOGGING
14 (void) reason;
15#endif
16}
#define LOGUNARY(...)
Definition logging.h:451
Here is the caller graph for this function:

◆ kissat_learned_unit()

void kissat_learned_unit ( struct kissat * solver,
unsigned lit )

Definition at line 18 of file assign.c.

18 {
19 kissat_assign_unit (solver, lit, "learned reason");
22}
ABC_NAMESPACE_IMPL_START void kissat_assign_unit(kissat *solver, unsigned lit, const char *reason)
Definition assign.c:10
#define CHECK_AND_ADD_UNIT(...)
Definition check.h:155
#define ADD_UNIT_TO_PROOF(...)
Definition proof.h:141
Here is the call graph for this function:
Here is the caller graph for this function:

◆ kissat_original_unit()

void kissat_original_unit ( struct kissat * solver,
unsigned lit )

Definition at line 24 of file assign.c.

24 {
25 kissat_assign_unit (solver, lit, "original reason");
26}
Here is the call graph for this function:
Here is the caller graph for this function: