Go to the source code of this file.
|
static
ABC_NAMESPACE_IMPL_START void | fcube_is_covered () |
|
static void | ftautology () |
|
static bool | ftaut_special_cases () |
|
pcover | irredundant (pcover F, pcover D) |
|
void | mark_irredundant (pcover F, pcover D) |
|
void | irred_split_cover (pcover F, pcover D, pcover *E, pcover *Rt, pcover *Rp) |
|
sm_matrix * | irred_derive_table (pcover D, pcover E, pcover Rp) |
|
bool | cube_is_covered (pcube *T, pcube c) |
|
bool | tautology (pcube *T) |
|
bool | taut_special_cases (pcube *T) |
|
static void | fcube_is_covered (pcube *T, pcube c, sm_matrix *table) |
|
static void | ftautology (pcube *T, sm_matrix *table) |
|
static bool | ftaut_special_cases (pcube *T, sm_matrix *table) |
|
Definition at line 207 of file irred.c.
ABC_NAMESPACE_IMPL_START pcube * cofactor(IN pcube *T, IN register pcube c)
Definition at line 335 of file irred.c.
ABC_NAMESPACE_IMPL_START pcube * cofactor(IN pcube *T, IN register pcube c)
static bool ftaut_special_cases |
( |
| ) |
|
|
static |
Definition at line 377 of file irred.c.
381 register pcube *T1, *Tsave,
p, temp = cube.temp[0], ceil = cube.temp[1];
385 for(T1 = T+2; (p = *T1++) != 0; ) {
400 if (cdata.vars_unate == cdata.vars_active) {
404 for(T1 = T+2; (p = *T1++) != 0; ) {
416 }
else if (cdata.vars_unate != 0) {
418 (void)
set_copy(ceil, cube.emptyset);
419 for(var = 0; var < cube.num_vars; var++) {
420 if (cdata.is_unate[var]) {
426 for(Tsave = T1 = T+2; (p = *T1++) != 0; ) {
432 T[1] = (
pcube) Tsave;
435 printf(
"UNATE_REDUCTION: %d unate variables, reduced to %d\n",
#define INLINEset_or(r, a, b)
sm_element * sm_insert(sm_matrix *A, int row, int col)
void massive_count(IN pcube *T)
static void ftautology |
( |
| ) |
|
|
static |
Definition at line 345 of file irred.c.
349 register pcube cl, cr;
351 static int ftaut_level = 0;
371 (void) printf(
"exit FIND_TAUTOLOGY[%d]: table is %d by %d\n",
static bool ftaut_special_cases()
int binate_split_select(IN pcube *T, IN register pcube cleft, IN register pcube cright, IN int debug_flag)
pcube * scofactor(IN pcube *T, IN pcube c, IN int var)
void debug_print(pcube *T, char *name, int level)
Definition at line 155 of file irred.c.
158 register pcube last,
p, *list;
160 int size_last_dominance, i;
178 size_last_dominance = 0;
185 (void) printf(
"IRRED1: %d of %d to-go=%d, table=%dx%d time=%s\n",
186 i, Rp->count, Rp->count - i,
190 if (table->
nrows - size_last_dominance > 1000) {
192 size_last_dominance = table->
nrows;
193 if (
debug & IRRED1) {
194 (void) printf(
"IRRED1: delete redundant rows, now %dx%d\n",
static ABC_NAMESPACE_IMPL_START void fcube_is_covered()
pcube * cube3list(pcover A, pcover B, pcover C)
#define foreach_set(R, last, p)
ABC_NAMESPACE_IMPL_START int sm_row_dominance(sm_matrix *A)
ABC_NAMESPACE_IMPL_START sm_matrix * sm_alloc()
Definition at line 92 of file irred.c.
122 (void) printf(
"IRRED1: zr=%d ze=%d to-go=%d time=%s\n",
123 R->count, (*E)->count, F->count - (R->count + (*E)->count),
137 if (
debug & IRRED1) {
138 (void) printf(
"IRRED1: zr=%d zrt=%d to-go=%d time=%s\n",
139 (*Rp)->count, (*Rt)->count,
#define PUTSIZE(set, size)
#define foreach_set(R, last, p)
bool cube_is_covered(pcube *T, pcube c)
pcube * cube2list(pcover A, pcover B)
Definition at line 27 of file irred.c.
void mark_irredundant(pcover F, pcover D)
pset_family sf_inactive()
Definition at line 40 of file irred.c.
66 p1 =
GETSET(F, pe->col_num);
71 printf(
"# IRRED: F=%d E=%d R=%d Rt=%d Rp=%d Rc=%d Final=%d Bound=%d\n",
72 F->count, E->count, Rt->count+Rp->count, Rt->count, Rp->count,
#define foreach_set(R, last, p)
#define sm_foreach_row_element(prow, p)
void sm_free(sm_matrix *A)
sm_matrix * irred_derive_table(pcover D, pcover E, pcover Rp)
sm_row * sm_minimum_cover(sm_matrix *A, int *weight, int heuristic, int debug_level)
#define GETSET(family, index)
typedefABC_NAMESPACE_HEADER_START struct sm_element_struct sm_element
void sm_row_free(sm_row *prow)
void irred_split_cover(pcover F, pcover D, pcover *E, pcover *Rt, pcover *Rp)
Definition at line 250 of file irred.c.
253 register pcube *T1, *Tsave,
p, ceil=cube.temp[0], temp=cube.temp[1];
258 for(T1 = T+2; (p = *T1++) != NULL; ) {
268 for(T1 = T+2; (p = *T1++) != NULL; ) {
280 if (cdata.vars_unate == cdata.vars_active) {
285 }
else if (cdata.vars_active == 1) {
290 }
else if (cdata.vars_unate != 0) {
292 (void)
set_copy(ceil, cube.emptyset);
293 for(var = 0; var < cube.num_vars; var++) {
294 if (cdata.is_unate[var]) {
300 for(Tsave = T1 = T+2; (p = *T1++) != 0; ) {
306 T[1] = (
pcube) Tsave;
309 printf(
"UNATE_REDUCTION: %d unate variables, reduced to %d\n",
315 }
else if (cdata.var_zeros[cdata.best] <
CUBELISTSIZE(T) / 2) {
#define INLINEset_or(r, a, b)
#define INLINEset_copy(r, a)
int cubelist_partition(pcube *T, pcube **A, pcube **B, unsigned int comp_debug)
void massive_count(IN pcube *T)
Definition at line 217 of file irred.c.
220 register pcube cl, cr;
222 static int taut_level = 0;
240 printf(
"exit TAUTOLOGY[%d]: %s\n", --taut_level,
print_bool(result));
bool taut_special_cases(pcube *T)
int binate_split_select(IN pcube *T, IN register pcube cleft, IN register pcube cright, IN int debug_flag)
pcube * scofactor(IN pcube *T, IN pcube c, IN int var)
void debug_print(pcube *T, char *name, int level)