code: def block(self, to_block):
          
  
          # translating objects to variables
          to_block = list(map(lambda obj: self.idpool.id(obj), to_block))
  
          # a soft clause should be added for each new object
          new_obj = list(filter(lambda vid: vid not in self.oracle.vmap.e2i, to_block))
  
          # new hard clause
          self.oracle.add_clause([-vid for vid in to_block])
  
          # new soft clauses
          for vid in new_obj:
              self.oracle.add_clause([-vid], 1)
docs: The method serves for imposing a constraint forbidding the hitting
              set solver to compute a given hitting set. Each set to block is
              encoded as a hard clause in the MaxSAT problem formulation, which
              is then added to the underlying oracle.
  
              :param to_block: a set to block
              :type to_block: iterable(obj)