src/analyze.cpp
// During conflict analysis literals not seen yet either become part of the
// first unique implication point (UIP) clause (if on lower decision level),
// are dropped (if fixed), or are resolved away (if on the current decision
// level and different from the first UIP).  At the same time we update the
// number of seen literals on a decision level.  This helps conflict clause
// minimization.  The number of seen levels is the glucose level (also
// called 'glue', or 'LBD').
During conflict analysis literals not seen yet either become part of the
first unique implication point (UIP) clause (if on lower decision level),
are dropped (if fixed), or are resolved away (if on the current decision
level and different from the first UIP).  At the same time we update the
number of seen literals on a decision level.  This helps conflict clause
minimization.  The number of seen levels is the glucose level (also
called 'glue', or 'LBD').
During conflict analysis literals not seen yet either become part of the first unique implication point ( UIP ) clause ( if on lower decision level ) are dropped ( if fixed ) or are resolved away ( if on the current decision level and different from the first UIP ) . At the same time we update the number of seen literals on a decision level . This helps conflict clause minimization . The number of seen levels is the glucose level ( also called ' glue ' or ' LBD ' ) .
inline void Internal::analyze_literal (int lit, int & open) {
  assert (lit);
  Flags & f = flags (lit);
  if (f.seen) return;
  Var & v = var (lit);
  if (!v.level) return;
  assert (val (lit) < 0);
  if (v.level < level) clause.push_back (lit);
  Level & l = control[v.level];
  if (!l.seen++) {
    LOG ("found new level %d contributing to conflict", v.level);
    levels.push_back (v.level);
  }
  if (v.trail < l.trail) l.trail = v.trail;
  f.seen = true;
  analyzed.push_back (lit);
  LOG ("analyzed literal %d assigned at level %d", lit, v.level);
  if (v.level == level) open++;
}
inline void Internal :: analyze_literal ( int lit , int & open ) { assert ( lit ) ; Flags & f = flags ( lit ) ; if ( f . seen ) return ; Var & v = var ( lit ) ; if ( ! v . level ) return ; assert ( val ( lit ) < 0 ) ; if ( v . level < level ) clause . push_back ( lit ) ; Level & l = control [ v . level ] ; if ( ! l . seen ++ ) { LOG ( " " , v . level ) ; levels . push_back ( v . level ) ; } if ( v . trail < l . trail ) l . trail = v . trail ; f . seen = true ; analyzed . push_back ( lit ) ; LOG ( " " , lit , v . level ) ; if ( v . level == level ) open ++ ; }
During conflict analysis literals not seen yet either become part of the
first unique implication point (UIP) clause (if on lower decision level),
are dropped (if fixed), or are resolved away (if on the current decision
level and different from the first UIP).
During conflict analysis literals not seen yet either become part of the first unique implication point ( UIP ) clause ( if on lower decision level ) are dropped ( if fixed ) or are resolved away ( if on the current decision level and different from the first UIP ) .