InformationTheory.Shannon.Kolmogorov.OmegaNoncomputable
Chaitin's constant is not computably approximable #
Cover–Thomas (2nd ed.). Running the self-delimiting machine
prefixUniversalEval with a finite budget yields a total function
prefixEvaln, primitive recursive in the budget and the program, which is sound
and complete for the unbounded machine. Summing 2 ^ (-|p|) over the programs
that have already halted gives the stage approximations omegaApprox, which
increase to the halting probability Ω: each is a subsum of the halting weight,
and every finite subsum is already reached at some stage.
A computable approximation of Ω from above therefore lets one search for a
stage whose weight is within 2 ^ (-n) of Ω, and that search is itself
computable because every comparison involved is between natural numbers over a
common power of two. Past that stage no program of length at most n can halt
any more, since its weight would push the halting weight above Ω. So the
halting set of the machine would be decidable, which it is not.
Main definitions #
IsComputableENNReal— computability of an extended nonnegative real by a computable sequence of dyadic rationals with error2 ^ (-n).IsFloorComputableENNReal— the dyadic floor variant of the same notion, which implies it.prefixEvaln— the step-bounded evaluator of the self-delimiting machine.omegaApprox— the stage-tapproximation toΩfrom below, with numeratoromegaApproxNumover the denominator2 ^ t.searchPred— the stage-lookup predicate, phrased over natural numbers.
Main statements #
chaitinOmega_not_computable—Ωis not computably approximable.prefixEvaln_primrec— the bounded evaluator is primitive recursive.prefixEvaln_complete— a value is output by the machine exactly when some finite budget already produces it.omegaApproxNum_computable— the numerators of the lower approximation form a computable sequence.iSup_omegaApprox— the stage approximations have supremumΩ, soexists_omegaApprox_gtbrings them within any positive margin ofΩ.searchTime_computable— the stage located by the search is a computable function of the requested precision.
Implementation notes #
IsComputableENNReal states its two bounds additively, so truncated subtraction
of extended reals never occurs. The standard notion of a computable real — a
computable sequence of rationals converging to x with error 2 ^ (-n) — can be
phrased in Lean, since ℚ is Primcodable through Denumerable ℚ. What is out
of reach is a proof that it implies IsComputableENNReal: rounding a rational
approximation to a multiple of 2 ^ (-n) needs computable division on ℚ, and
Mathlib.Computability carries no Primrec arithmetic on ℚ. The comparison
that is formalized is isComputableENNReal_of_floor, the implication from the
dyadic floor form; since the floor form implies the additive one, negating the
additive form is the stronger statement.
InformationTheory.Kolmogorov.IsComputableENNReal
sourceA computable nonnegative extended real: a computable sequence of dyadic
numerators a n, whose value a n / 2 ^ n is within 2 ^ (-n) of x. The two
bounds are stated additively, so no truncated subtraction occurs.
The standard notion — a computable sequence of rationals converging to x with
error 2 ^ (-n) — yields such a numerator sequence by rounding, but that
rounding step is not formalized here, for want of computable arithmetic on ℚ.
The additive form is preferred over the dyadic floor form
IsFloorComputableENNReal because no uniform transformation turns an
approximation sequence into a floor sequence: that would mean deciding, from the
approximations alone, which side of a dyadic grid point x falls on.
@audit:ok
Equations
Instances For
Used by
InformationTheory.Kolmogorov.IsFloorComputableENNReal
sourceThe dyadic floor form of computability: a n * 2 ^ (-n) sits in the cell of
width 2 ^ (-n) below x. It implies IsComputableENNReal, as
isComputableENNReal_of_floor records; there is no uniform converse, since
producing a floor sequence from an approximation sequence would mean deciding
which side of a dyadic grid point x lies on.
@audit:ok
Equations
Instances For
Used by
InformationTheory.Kolmogorov.isComputableENNReal_of_floor
sourceUsed by
InformationTheory.Kolmogorov.prefixEvaln
sourceThe step-bounded evaluator: the self-delimiting machine run with budget k,
following decodePayload_eq_dispatch with eval replaced by evaln k.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Used by
InformationTheory.Kolmogorov.prefixEvaln_mono
sourceUsed by
InformationTheory.Kolmogorov.prefixEvaln_sound
sourceUsed by
InformationTheory.Kolmogorov.prefixEvaln_complete
sourceThe bounded evaluator is sound and complete for the unbounded machine: x is
an output of prefixUniversalEval p exactly when some finite budget k already
produces it.
Used by
InformationTheory.Kolmogorov.prefixEvaln_dom_iff
sourceUsed by
InformationTheory.Kolmogorov.prefixEvaln_primrec
sourceRunning the self-delimiting machine with a finite budget is primitive recursive in the budget and the program jointly.
Used by
Enumerating bit strings #
InformationTheory.Kolmogorov.primrec_list_sum
sourceUsed by
InformationTheory.Kolmogorov.primrec_list_filter
sourceUsed by
InformationTheory.Kolmogorov.primrec_two_pow
sourceUsed by
InformationTheory.Kolmogorov.allBitStrings
sourceAll bit strings of length exactly n.
Equations
Instances For
Used by
InformationTheory.Kolmogorov.mem_allBitStrings
sourceUsed by
InformationTheory.Kolmogorov.allBitStrings_nodup
sourceUsed by
InformationTheory.Kolmogorov.allBitStrings_primrec
sourceUsed by
InformationTheory.Kolmogorov.allBitStringsLE
sourceAll bit strings of length at most t.
Equations
Instances For
Used by
InformationTheory.Kolmogorov.mem_allBitStringsLE
sourceUsed by
InformationTheory.Kolmogorov.allBitStringsLE_nodup
sourceUsed by
InformationTheory.Kolmogorov.allBitStringsLE_primrec
sourceUsed by
Approximating the halting probability from below #
InformationTheory.Kolmogorov.haltingList
sourceThe programs of length at most t on which the machine already halts within
budget t.
Equations
Instances For
Used by
InformationTheory.Kolmogorov.mem_haltingList
sourceUsed by
InformationTheory.Kolmogorov.haltingList_nodup
sourceUsed by
InformationTheory.Kolmogorov.haltingList_primrec
sourceUsed by
InformationTheory.Kolmogorov.omegaApprox
sourceThe stage-t approximation to Ω from below: the mass of the programs of
length at most t on which the machine halts within budget t.
Equations
Instances For
Used by
InformationTheory.Kolmogorov.omegaApproxNum
sourceThe numerator of omegaApprox t written over the denominator 2 ^ t.
Equations
- InformationTheory.Kolmogorov.omegaApproxNum t = (List.map (fun (p : List Bool) => 2 ^ (t - p.length)) (InformationTheory.Kolmogorov.haltingList t)).sum
Instances For
Used by
InformationTheory.Kolmogorov.natCast_two_pow_sub_mul_inv_pow
sourceUsed by
InformationTheory.Kolmogorov.omegaApprox_eq_num
sourceUsed by
InformationTheory.Kolmogorov.omegaApprox_ne_top
sourceUsed by
InformationTheory.Kolmogorov.omegaApproxNum_computable
sourceThe numerators of the lower approximation form a computable sequence, so the
stage approximations to Ω are computable over the denominators 2 ^ t.
Used by
Monotonicity and cofinality of the lower approximation #
InformationTheory.Kolmogorov.prefixEvaln_isSome_mono
sourceUsed by
InformationTheory.Kolmogorov.haltingList_toFinset_subset
sourceUsed by
InformationTheory.Kolmogorov.omegaApprox_mono
sourceUsed by
InformationTheory.Kolmogorov.sum_le_chaitinOmega
sourceUsed by
InformationTheory.Kolmogorov.omegaApprox_le_chaitinOmega
sourceUsed by
InformationTheory.Kolmogorov.exists_sum_le_omegaApprox
sourceUsed by
InformationTheory.Kolmogorov.chaitinOmega_eq_iSup_sum
sourceUsed by
InformationTheory.Kolmogorov.exists_omegaApprox_gt
sourceUsed by
InformationTheory.Kolmogorov.iSup_omegaApprox
sourceThe stage approximations increase to the halting probability: each is a
subsum of the halting weight, and every finite subsum is reached at some stage,
so their supremum is Ω.
Used by
Locating a stage from a computable approximation #
InformationTheory.Kolmogorov.inv_two_pow_add_self
sourceUsed by
InformationTheory.Kolmogorov.natCast_mul_inv_pow_eq
sourceUsed by
InformationTheory.Kolmogorov.searchPred
sourceThe search predicate behind the stage lookup, written over the common
denominator 2 ^ (n + 2 + t) so that every comparison is between natural
numbers: a (n + 2) * 2 ^ (-(n+2)) ≤ omegaApprox t + 2 ^ (-(n+1)).
Equations
Instances For
Used by
InformationTheory.Kolmogorov.instDecidableSearchPred
sourceEquations
Used by
InformationTheory.Kolmogorov.searchPred_iff
sourceUsed by
InformationTheory.Kolmogorov.searchPred_computablePred
sourceUsed by
InformationTheory.Kolmogorov.exists_searchPred
sourceUsed by
InformationTheory.Kolmogorov.searchTime_computable
sourceThe least stage satisfying searchPred is a computable function of the
requested precision, because the predicate compares natural numbers over a common
power of two.
Used by
InformationTheory.Kolmogorov.chaitinOmega_lt_omegaApprox_find
sourceUsed by
The halting probability is not computably approximable #
InformationTheory.Kolmogorov.isComputableENNReal_one
sourceUsed by
InformationTheory.Kolmogorov.omegaApprox_add_le_chaitinOmega
sourceUsed by
InformationTheory.Kolmogorov.dom_iff_prefixEvaln_find_isSome
sourceUsed by
InformationTheory.Kolmogorov.chaitinOmega_not_computable
sourceChaitin's constant is not computably approximable: no computable sequence of
dyadic numerators a satisfies |Ω - a n * 2 ^ (-n)| ≤ 2 ^ (-n) for every n.
A computable approximation from above, combined with the computable
approximation omegaApprox from below, locates a stage past which no program of
length at most n can still halt, and hence decides the halting set of the
self-delimiting machine, contradicting
prefixUniversalEval_dom_not_computablePred.
The textbook statement speaks of a computable real in the sense of a computable
sequence of rationals. That notion can be phrased in Lean, ℚ being
Primcodable, but deriving IsComputableENNReal from it takes a rounding step
and hence computable division on ℚ, for which Mathlib has no Primrec
arithmetic; the two are therefore not linked here, and the negation is proved for
IsComputableENNReal itself.
@audit:ok