following queries are supported in constant time: for any $a\in\Sigma'$ its rank in $\Sigma'$ can be found (for any $a\not\in \Sigma'$ the answer is $-1$); for any $i\in [1..\sigma]$ the $i$-th smallest element in $\Sigma'$ can be found. The indexed dictionary of Raman [[*et al.*]{}]{} [@RRR02] uses $\sigma\lg(em/\sigma)+o(\sigma)+O(\lg \lg m)$ bits of space, where $e$ is the base of the natural logarithm and $m$ is the maximal element in $\Sigma'$; the value of $m$ can be specified with additional $O(\lg m)$ bits. We replace every element in $s$ by its rank in $\Sigma'$; the resulting string can be stored using Theorem \[thm:partitioning\]. Hence, in the general case the space usage is increased by $\sigma\lg(em/\sigma)+o(\sigma)+O(\lg m)$ bits and the asymptotic time complexity of queries remains unchanged.

Higher-order entropies {#sec:higher-order}
======================

Sadakane and Grossi [@SG06] showed how to store $s$ in $n H_k (s) + o (n) \lg \sigma$ bits, for $k = o (\log_\sigma n)$, and still support ${\ensuremath{\mathcal{O}\left( {1} \right)}}$-time access (and, moreover, retrieving any ${\ensuremath{\mathcal{O}\left( {\log_\sigma n} \right)}}$ contiguous symbols in ${\ensuremath{\mathcal{O}\left( {1} \right)}}$ time). Their scheme was simplified by González and Navarro [@GN06] and then further simplified by Ferragina and Venturini [@FV07]. The main idea is to break 