  Since the set of prefix-free codes is a subset of the set of all possible codes, we should expect generally that \(C(\sigma) \le K(\sigma)\). On the other hand, we can construct a universal prefix-free algorithm \(u\) as follows. A universal Turing machine \(u'\) takes as input the Gödel number of the Turing machine we wish to simulate, and the input we wish to give to that machine. Let us concatenate these two inputs into a longer input string that is itself uniquely readable; and we then encode that longer string into our prefix-free encoding. The encoding is effectively computable, clearly, so we can chain a decoding machine together with our universal machine \(u'\); on input an acceptable prefix-free string, the decoder will decompose it into the input string, we then decompose the input string into the Gödel number and the input, and run the machine \(u'\) on that pair of inputs. Depending on the particular encoding we choose, we may establish various bounds on \(K\); one obvious bound we have already established is that \(C(\sigma) \le K(\sigma) \lt C(\sigma) + 2\lvert\sigma\rvert\). By using a more efficient prefix-free coding of a \(u'\)-description, we can establish better  bounds.[13]  (Some more results on the connection between \(K\) and \(C\) are in Downey and Hirschfeldt 2010: §§3.1–3.2.)