ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
dense.c File Reference
#include "dense.h"
#include "inline.h"
#include "proprobe.h"
#include "propsearch.h"
#include "trail.h"
#include "sort.c"
#include <string.h>
Include dependency graph for dense.c:

Go to the source code of this file.

Macros

#define INLINE_SORT
 

Functions

void kissat_enter_dense_mode (kissat *solver, litpairs *irredundant)
 
void kissat_resume_sparse_mode (kissat *solver, bool flush_eliminated, litpairs *irredundant)
 

Macro Definition Documentation

◆ INLINE_SORT

#define INLINE_SORT

Definition at line 1 of file dense.c.

Function Documentation

◆ kissat_enter_dense_mode()

void kissat_enter_dense_mode ( kissat * solver,
litpairs * irredundant )

Definition at line 101 of file dense.c.

101 {
102 KISSAT_assert (!solver->level);
103 KISSAT_assert (solver->watching);
104 KISSAT_assert (kissat_propagated (solver));
105 LOG ("entering dense mode with full occurrence lists");
106 if (irredundant)
107 flush_large_watches (solver, irredundant);
108 else
110 LOG ("switched to full occurrence lists");
111 solver->watching = false;
112}
#define LOG(...)
pcover irredundant()
#define KISSAT_assert(ignore)
Definition global.h:13
#define solver
Definition kitten.c:211
void kissat_flush_large_watches(kissat *solver)
Definition watch.c:112
Here is the call graph for this function:
Here is the caller graph for this function:

◆ kissat_resume_sparse_mode()

void kissat_resume_sparse_mode ( kissat * solver,
bool flush_eliminated,
litpairs * irredundant )

Definition at line 201 of file dense.c.

202 {
203 KISSAT_assert (!solver->level);
204 KISSAT_assert (!solver->watching);
205 if (solver->inconsistent)
206 return;
207 LOG ("resuming sparse mode watching clauses");
209 LOG ("switched to watching clauses");
210 solver->watching = true;
211 if (irredundant) {
212 LOG ("resuming watching %zu irredundant binaries",
214 resume_watching_irredundant_binaries (solver, irredundant);
215 }
216 if (flush_eliminated)
217 resume_watching_large_clauses_after_elimination (solver);
218 else
220 LOG ("forcing to propagate units on all clauses");
221 kissat_reset_propagate (solver);
222
223 clause *conflict;
224 if (solver->probing)
225 conflict = kissat_probing_propagate (solver, 0, true);
226 else
227 conflict = kissat_search_propagate (solver);
228
229#ifndef KISSAT_NDEBUG
230 if (conflict)
231 KISSAT_assert (solver->inconsistent);
232 else
233 KISSAT_assert (kissat_trail_flushed (solver));
234#else
235 (void) conflict;
236#endif
237}
#define SIZE_STACK(S)
Definition stack.h:19
clause * kissat_probing_propagate(kissat *solver, clause *ignore, bool flush)
Definition proprobe.c:37
clause * kissat_search_propagate(kissat *solver)
Definition propsearch.c:46
void kissat_watch_large_clauses(kissat *solver)
Definition watch.c:145
void kissat_flush_large_connected(kissat *solver)
Definition watch.c:206
Here is the call graph for this function:
Here is the caller graph for this function: