code: def get_core(self):
          
  
          # extracting the core
          self.core = self.oracle.get_core()
  
          if self.core:
              # try to reduce the core by trimming
              self.trim_core()
  
              # and by heuristic minimization
              self.minimize_core()
  
              # core weight
              self.minw = min(map(lambda l: self.wght[l], self.core))
  
              # dividing the core into two parts
              iter1, iter2 = itertools.tee(self.core)
              self.core_sels = list(l for l in iter1 if l in self.sels_set)
              self.core_sums = list(l for l in iter2 if l not in self.sels_set)
docs: Extract unsatisfiable core. The result of the procedure is
              stored in variable ``self.core``. If necessary, core
              trimming and also heuristic core reduction is applied
              depending on the command-line options. A *minimum weight*
              of the core is computed and stored in ``self.minw``.
              Finally, the core is divided into two parts:
  
              1. clause selectors (``self.core_sels``),
              2. sum assumptions (``self.core_sums``).