docs: def process_sels(self):
          """
              Process soft clause selectors participating in a new core.
              The negation :math:`\\neg{s}` of each selector literal
              :math:`s` participating in the unsatisfiable core is added
              to the list of relaxation literals, which will be later
              used to create a new totalizer object in
              :func:`create_sum`.
  
              If the weight associated with a selector is equal to the
              minimal weight of the core, e.g. ``self.minw``, the
              selector is marked as garbage and will be removed in
              :func:`filter_assumps`. Otherwise, the clause is split as
              described in [1]_.
          """
  
          # new relaxation variables
          self.rels = []
  
          for l in self.core_sels:
              if self.wght[l] == self.minw:
                  # marking variable as being a part of the core
                  # so that next time it is not used as an assump
                  self.garbage.add(l)
  
                  # reuse assumption variable as relaxation
                  self.rels.append(-l)
              else:
                  # do not remove this variable from assumps
                  # since it has a remaining non-zero weight
                  self.wght[l] -= self.minw
  
                  # it is an unrelaxed soft clause,
                  # a new relaxed copy of which we add to the solver
                  self.topv += 1
                  self.oracle.add_clause([l, self.topv])
                  self.rels.append(self.topv)