+
+ if (!last)
+ return false;
+
+ prev = INT_MAX;
+ for (v = uintmap_last(map, &i); v; v = uintmap_before(map, &i)) {
+ if ((int64_t)i >= prev)
+ return false;
+ if (*v != i)
+ return false;
+ prev = i;
+ last = (uintmap_first(map, &last_idx) == v);
+ }
+
+ if (!last)
+ return false;
+
+ prev = -1;
+ return uintmap_iterate(map, uint_iterate_check, &prev);
+}
+
+static bool sint_iterate_check(sintmap_index_t i, int *v, int64_t *prev)
+{
+ if (i <= *prev)
+ return false;
+ if (*v != i)
+ return false;
+ *prev = i;
+ return true;