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

Go to the source code of this file.

Functions

struct clausekissat_on_the_fly_strengthen (struct kissat *, struct clause *, unsigned lit)
 
void kissat_on_the_fly_subsume (struct kissat *, struct clause *, struct clause *)
 
bool issat_strengthen_clause (struct kissat *, struct clause *, unsigned)
 

Function Documentation

◆ issat_strengthen_clause()

bool issat_strengthen_clause ( struct kissat * ,
struct clause * ,
unsigned  )

◆ kissat_on_the_fly_strengthen()

struct clause * kissat_on_the_fly_strengthen ( struct kissat * solver,
struct clause * c,
unsigned lit )

Definition at line 144 of file strengthen.c.

145 {
147 KISSAT_assert (solver->antecedent_size > 2);
148 if (!c->redundant)
149 kissat_mark_removed_literal (solver, lit);
150 clause *res;
151 if (solver->antecedent_size == 3)
152 res = binary_on_the_fly_strengthen (solver, c, lit);
153 else
154 res = large_on_the_fly_strengthen (solver, c, lit);
155 return res;
156}
#define KISSAT_assert(ignore)
Definition global.h:13
#define solver
Definition kitten.c:211
int lit
Definition satVec.h:130
bool redundant
Definition clause.h:28
bool garbage
Definition clause.h:25
Here is the caller graph for this function:

◆ kissat_on_the_fly_subsume()

void kissat_on_the_fly_subsume ( struct kissat * solver,
struct clause * c,
struct clause * d )

Definition at line 158 of file strengthen.c.

158 {
159 LOGCLS (c, "on-the-fly subsuming");
160 LOGCLS (d, "on-the-fly subsumed");
161 KISSAT_assert (c != d);
163 KISSAT_assert (c->size > 1);
164 KISSAT_assert (c->size <= d->size);
166 INC (on_the_fly_subsumed);
167 if (d->redundant) {
168 if (c->redundant && c->glue > d->glue)
170 return;
171 }
172 if (!c->redundant)
173 return;
174 if (c->size > 2) {
175 c->redundant = false;
176 LOGCLS (c, "turned");
178 }
179 statistics *statistics = &solver->statistics_;
180 if (c->size > 2) {
181 KISSAT_assert (statistics->clauses_irredundant < UINT64_MAX);
182 statistics->clauses_irredundant++;
183 } else {
184 KISSAT_assert (statistics->clauses_binary < UINT64_MAX);
185 statistics->clauses_binary++;
186 }
187 KISSAT_assert (statistics->clauses_redundant > 0);
188 statistics->clauses_redundant--;
189}
#define INC(NAME)
void kissat_mark_clause_as_garbage(kissat *solver, clause *c)
Definition clause.c:164
void kissat_update_last_irredundant(kissat *solver, clause *irredundant)
Definition collect.c:200
#define LOGCLS(...)
Definition logging.h:415
ABC_NAMESPACE_IMPL_START void kissat_promote_clause(kissat *solver, clause *c, unsigned new_glue)
Definition promote.c:7
unsigned glue
Definition clause.h:23
unsigned size
Definition clause.h:37
Here is the call graph for this function:
Here is the caller graph for this function: