code: private boolean tryElim(final int cand) {
          assert var(cand).free();
          final CLOccs p = occs(cand);
          final CLOccs n = occs(-cand);
          long limit = (long) p.count() + n.count();
          for (int i = 0; limit >= 0 && i < p.clauses().size(); i++) {
              final CLClause c = p.clauses().get(i);
              assert !c.redundant();
              this.stats.steps++;
              if (c.dumped() || satisfied(c)) { continue; }
              for (int j = 0; limit >= 0 && j < n.clauses().size(); j++) {
                  final CLClause d = n.clauses().get(j);
                  assert !d.redundant();
                  this.stats.steps++;
                  if (d.dumped() || satisfied(d)) { continue; }
                  if (tryResolve(c, cand, d)) { limit--; }
              }
          }
          return limit >= 0;
      }
docs: Tries bounded variable elimination on a candidate literal.
  @param cand the literal
  @return {@code true} if resolution of all positive with all negative occurrences of the candidate produces at most
  as many non trivial resolvents as the number of positive plus negative occurrences, {@code false} otherwise