docs: def increase(self, ubound=1, top_id=None):
          """
              Increases a potential upper bound that can be imposed on the
              literals in the sum of an existing :class:`ITotalizer` object to a
              new value.
  
              :param ubound: a new upper bound.
              :param top_id: a new top variable identifier.
  
              :type ubound: int
              :type top_id: integer or None
  
              The top identifier ``top_id`` applied only if it is greater than
              the one used in ``self``.
  
              This method creates additional clauses encoding the existing
              totalizer tree up to the new upper bound given and appends them to
              the list of clauses of :class:`.CNF` ``self.cnf``. The number of
              newly created clauses is stored in variable ``self.nof_new``.
  
              Also, a list of bounds ``self.rhs`` gets increased and its length
              becomes ``ubound+1``.
  
              The method can be used in the following way:
  
              .. code-block:: python
  
                  >>> from pysat.card import ITotalizer
                  >>> t = ITotalizer(lits=[1, 2, 3], ubound=1)
                  >>> print t.cnf.clauses
                  [[-2, 4], [-1, 4], [-1, -2, 5], [-4, 6], [-5, 7], [-3, 6], [-3, -4, 7]]
                  >>> print t.rhs
                  [6, 7]
                  >>>
                  >>> t.increase(ubound=2)
                  >>> print t.cnf.clauses
                  [[-2, 4], [-1, 4], [-1, -2, 5], [-4, 6], [-5, 7], [-3, 6], [-3, -4, 7], [-3, -5, 8]]
                  >>> print t.cnf.clauses[-t.nof_new:]
                  [[-3, -5, 8]]
                  >>> print t.rhs
                  [6, 7, 8]
                  >>> t.delete()
          """
  
          self.top_id = max(self.top_id, top_id if top_id != None else 0)
  
          # do nothing if the bound is set incorrectly
          if ubound <= self.ubound or self.ubound >= len(self.lits):
              self.nof_new = 0
              return
          else:
              self.ubound = ubound
  
          # saving default SIGINT handler
          def_sigint_handler = signal.signal(signal.SIGINT, signal.SIG_DFL)
  
          # updating the object and adding more variables and clauses
          clauses, self.rhs, self.top_id = pycard.itot_inc(self.tobj,
                  self.ubound, self.top_id)
  
          # recovering default SIGINT handler
          def_sigint_handler = signal.signal(signal.SIGINT, def_sigint_handler)
  
          # saving the result
          self.cnf.clauses.extend(clauses)
          self.cnf.nv = self.top_id
  
          # keeping the number of newly added clauses
          self.nof_new = len(clauses)