docs: def _overapprox(self):
          """
              The method extracts a model corresponding to an over-approximation
              of an MCS, i.e. it is the model of the hard part of the formula
              (the corresponding oracle call is made in :func:`compute`).
  
              Here, the set of selectors is divided into two parts:
              ``self.ss_assumps``, which is an under-approximation of an MSS
              (maximal satisfiable subset) and ``self.setd``, which is an
              over-approximation of the target MCS. Both will be further refined
              in :func:`_compute`.
          """
  
          model = self.oracle.get_model()
  
          for sel in self.sels:
              if len(model) < sel or model[sel - 1] > 0:
                  # soft clauses contain positive literals
                  # so if var is true then the clause is satisfied
                  self.ss_assumps.append(sel)
              else:
                  self.setd.append(sel)