  The notion of prefix-free complexity is defined in exactly the same way as plain complexity, with the additional restriction that the allowable \(f\)-descriptions of a string, given a decompression function \(f\), must form a prefix-free set. With an appropriate choice of coding, we can get a set of \(f\)-descriptions which is monotonic with increasing length, i.e., if \(\lvert\gamma\rvert \lt \lvert\delta\rvert\)  then \(\lvert f(\gamma)\rvert \lt \lvert f(\delta)\rvert\). Our definition  goes much as before: The prefix free Kolmogorov complexity, given a decompression function \(f\) with a prefix-free domain, of a string \(\sigma\), denoted \(K_f (\sigma)\), is the length of the shortest \(f\)-description of \(\sigma\) (and infinite otherwise). Since \(1^{[\lvert\sigma\rvert]}0\sigma\) is a finite prefix-free code for \(\sigma\), we know there are at least some prefix-free decompression algorithms with finite \(K_f\) for every string. As before, we can show there exist better decompression algorithms than this one, and indeed, that there exists a universal prefix-free decompression algorithm \(u\), such that for every other algorithm \(m\) there is a \(k\) such that \(K_u (\sigma) \le K_m (\sigma) + k\), for all \(\sigma\) (Downey and Hirschfeldt 2010: §2.5). We define \(K(\sigma) = K_u (\sigma)\).