code: def process_am1(self, am1):
          
  
          # computing am1's weight
          self.minw = min(map(lambda l: self.wght[l], am1))
  
          # pretending am1 to be a core, and the bound is its size - 1
          self.core_sels, b = am1, len(am1) - 1
  
          # incrementing the cost
          self.cost += b * self.minw
  
          # assumptions to remove
          self.garbage = set()
  
          # splitting and relaxing if needed
          self.process_sels()
  
          # new selector
          self.topv += 1
          selv = self.topv
  
          self.oracle.add_clause([-l for l in self.rels] + [-selv])
  
          # integrating the new selector
          self.sels.append(selv)
          self.wght[selv] = self.minw
          self.smap[selv] = len(self.wght) - 1
  
          # do not forget this newly selector!
          self.bckp_set.add(selv)
  
          # removing unnecessary assumptions
          self.filter_assumps()
docs: Due to the solving process involving multiple optimization
              levels to be treated individually, new soft clauses for
              the detected intrinsic AtMost1 constraints should be
              remembered. The method is a slightly modified version of
              the base method :func:`RC2.process_am1` taking care of
              this.