docs: def consume_input(self, inp):
          """
          Return True/False if the machine accepts/reject the input.
          Args:
              inp (str): input string to be consumed
          Returns:
              bool: A true or false value depending on if the DFA
                  accepts the provided input
          """
          cur_state = sorted(
              self.states,
              key=attrgetter('initial'),
              reverse=True)[0]
          while len(inp) > 0:
              found = False
              for arc in cur_state.arcs:
                  if self.isyms.find(arc.ilabel) == inp[0]:
                      cur_state = self[arc.nextstate]
                      inp = inp[1:]
                      found = True
                      break
              if not found:
                  return False
          return cur_state.final != TropicalWeight(float('inf'))