code: def _filter_satisfied(self, update_setd=False):
          
  
          model = self.oracle.get_model()
          setd = set()
  
          for i, cl in enumerate(self.soft):
              if not self.satc[i]:
                  if self._satisfied(cl, model):
                      self.satc[i] = True
                      self.ss_assumps.append(self.sels[i])
                  else:
                      setd = setd.union(set(cl))
  
          if update_setd:
              self.setd = list(setd)
docs: This method extracts a model provided by the previous call to a SAT
              oracle and iterates over all soft clauses checking if each of is
              satisfied by the model. Satisfied clauses are marked accordingly
              while the literals of the unsatisfied clauses are kept in a list
              called ``setd``, which is then used to refine the correction set
              (see :func:`_compute`, and :func:`do_cld_check`).
  
              Optional Boolean parameter ``update_setd`` enforces the method to
              update variable ``self.setd``. If this parameter is set to
              ``False``, the method only updates the list of satisfied clauses,
              which is an under-approximation of a *maximal satisfiable subset*
              (MSS).
  
              :param update_setd: whether or not to update setd
              :type update_setd: bool