Fix alphabet {0,1}.
Fix some encoding of Turing machines.
For any string x in {0,1}*, define K(x), the Kolmogorov complexity of x, as follows. Consider all Turing machines that, when run on blank tape, output x. K(x) is the length of the smallest encoding of any of these Turing machines. That is, K(x) is the size of the smallest Turing machine encoding x.
some facts:
See chapter 6 of Sipser for basic properties of Kolmogorov complexity.
Intuitively, although almost all strings have high Kolmogorov complexity, for any given string, it is impossible to verify that it has high Kolmogorov complexity. Next we try to formalize this intuition a bit.
Define HARD={ x ∈ {0,1}* : K(x) ≥ |x|/2 }.
A language L is immune if (1) L is infinite, (2) every Turing-recognizable subset of L is finite. That is, not only is L not Turing-recognizable, but the only subsets of L that are Turing recognizable are the finite subsets.
claim: HARD is immune.
Mi always halts because, as L(M) is infinite, there will be some input of size 2i or larger that M accepts.
Define xi to be the string output by Mi. What can we say about K(xi)?
Thus, for all i, 2i-1 ≤ O(log i), which is a contradiction.
corollary: K(x) is not computable.
Let A be any axiomatic system for reasoning about (at least) Turing machines.
Previously we argued that any such axiomatic system is either incomplete (for some statement S, neither S nor its negation was provable) or inconsistent (for some statement S, both S and its negation were provable). One interpretation is that either there is a true statement that is not provable, or there is a false statement that is provable.
The proof was by diagonalization. We carefully constructed a particular S by diagonalizing against the statements provable by A.
Next we want to argue for something much stronger. That in fact, for any fixed A and any (large enough) integer n, a constant fraction of all statements of length n are true but not provable by A.
Consider, for any string x, the statement S(x) = "String x has K(x) at least |x|/2".
For some constant c, the statement S(x) can be written down (in the language of A) in |x|+c bits. (|x| bits to write down x, c bits to write down the def'n of Kolmogorov complexity.)
Thus, among the at most 2n n-bit statements, at least 2n-c are of the form S(x) for some x (where |x| = n-c, in fact).
Furthermore,
Thus, among all statements of length n, at least a fraction 1/2c of them are true but not provable.
Our conclusion regarding Kolmogorov complexity is that, even though the set of true statements is countable, and the set of provable statements is countable, for any axiomatic system A, the set of true but not provable statements is a constant fraction of all the statements.