code: def init(self, bootstrap_with):
          
  
          # formula encoding the sets to hit
          formula = WCNF()
  
          # hard clauses
          for to_hit in bootstrap_with:
              to_hit = list(map(lambda obj: self.idpool.id(obj), to_hit))
  
              formula.append(to_hit)
  
          # soft clauses
          for obj_id in six.iterkeys(self.idpool.id2obj):
              formula.append([-obj_id], weight=1)
  
          if self.htype == 'rc2':
              # using the RC2-A options from MaxSAT evaluation 2018
              self.oracle = RC2(formula, solver=self.solver, adapt=False,
                      exhaust=True, trim=5)
          elif self.htype == 'lbx':
              self.oracle = LBX(formula, solver_name=self.solver, use_cld=True)
          else:
              self.oracle = MCSls(formula, solver_name=self.solver, use_cld=True)
docs: This method serves for initializing the hitting set solver with a
              given list of sets to hit. Concretely, the hitting set problem is
              encoded into partial MaxSAT as outlined above, which is then fed
              either to a MaxSAT solver or an MCS enumerator.
  
              :param bootstrap_with: input set of sets to hit
              :type bootstrap_with: iterable(iterable(obj))