src/elim.cpp
// Note that the new fast subsumption algorithm implemented in 'subsume'
// does not distinguish between irredundant and redundant clauses and is
// also run during search to strengthen and remove 'sticky' redundant
// clauses but also irredundant ones.  So beside learned units during search
// or as consequence of other preprocessors, these subsumption rounds during
// search can remove (irredundant) clauses (and literals), which in turn
// might make new bounded variable elimination possible.  This is tested
// in the 'eliminating' guard.
Note that the new fast subsumption algorithm implemented in 'subsume'
does not distinguish between irredundant and redundant clauses and is
also run during search to strengthen and remove 'sticky' redundant
clauses but also irredundant ones.  So beside learned units during search
or as consequence of other preprocessors, these subsumption rounds during
search can remove (irredundant) clauses (and literals), which in turn
might make new bounded variable elimination possible.  This is tested
in the 'eliminating' guard.
Note that the new fast subsumption algorithm implemented in ' subsume ' does not distinguish between irredundant and redundant clauses and is also run during search to strengthen and remove ' sticky ' redundant clauses but also irredundant ones . So beside learned units during search or as consequence of other preprocessors these subsumption rounds during search can remove ( irredundant ) clauses ( and literals ) which in turn might make new bounded variable elimination possible . This is tested in the ' eliminating ' guard .
bool Internal::eliminating () {
  if (!opts.simplify) return false;
  if (!opts.elim) return false;
  if (lim.fixed_at_last_elim == stats.all.fixed &&
      lim.removed_at_last_elim == stats.removed) return false;
   Wait until next 'reduce'.
  if (opts.reduce &&
      stats.conflicts != lim.conflicts_at_last_reduce) return false;
  return lim.elim <= stats.conflicts;
}
bool Internal :: eliminating ( ) { if ( ! opts . simplify ) return false ; if ( ! opts . elim ) return false ; if ( lim . fixed_at_last_elim == stats . all . fixed && lim . removed_at_last_elim == stats . removed ) return false ; if ( opts . reduce && stats . conflicts != lim . conflicts_at_last_reduce ) return false ; return lim . elim <= stats . conflicts ; }
Note that the new fast subsumption algorithm implemented in 'subsume'
does not distinguish between irredundant and redundant clauses and is
also run during search to strengthen and remove 'sticky' redundant
clauses but also irredundant ones.
Note that the new fast subsumption algorithm implemented in ' subsume ' does not distinguish between irredundant and redundant clauses and is also run during search to strengthen and remove ' sticky ' redundant clauses but also irredundant ones .
// Wait until there has been a change in terms of new units or new removed // variables (in removed or shrunken irredundant clauses). // // Wait until next 'reduce'. //