Documentation

Complexity.Computability.Kolmogorov.MultiTape

Description methods of multi-tape Turing machines #

A deterministic multi-tape Turing machine over the binary alphabet is a description method: a program is an input of the machine, the clock counts steps, and the output of a program is the contents of the output tape once the machine has halted. Its complexity C_tm(x) is the length of a shortest input on which tm computes x, and C_tm^t(x) that of a shortest input on which tm computes x within t steps.

When the state space is finite, tm.eval is partial recursive (Turing.MultiTapeTM.partrec_eval), so mapping any computable decoder dec : List Bool → ℕ over ofMultiTapeTM tm yields a partial recursive description method (isPartrec_ofMultiTapeTM_map). By the invariance theorem (isAdditivelyOptimal_universal), universal is at most an additive constant worse than any finite-state multi-tape Turing machine (exists_ecomplexity_universal_le_ofMultiTapeTM).

Main definitions #

Main results #

References #

The description method of a deterministic multi-tape Turing machine over the binary alphabet: the program p is the input, and after t steps its output is the contents of the output tape if the machine has halted.

Instances For
    @[simp]

    A program describes x exactly when the machine computes x from it.

    A program describes x within t steps exactly when the machine computes x from it and halts within t steps.

    An input from which the machine computes x within t steps bounds the time-bounded complexity C_tm^t(x).

    A machine simulating the literal method #

    From a computation of the identity, a simulation of the literal description method with one extra step.

    Instances For
      theorem Cslib.Kolmogorov.DescriptionMethod.exists_simulation_literal :
      ∃ (k : ℕ) (State : Type) (_ : Finite State) (tm : Turing.MultiTapeTM k Bool State), Nonempty (literal.Simulation (ofMultiTapeTM tm) 0 fun (x t : ℕ) => t + 1)

      Some machine with finitely many states simulates the literal description method with one extra step, so under it every string x has complexity at most |x| within |x| + 1 steps.

      Partial recursiveness and optimality of universal over MultiTapeTM #

      theorem Cslib.Kolmogorov.DescriptionMethod.isPartrec_ofMultiTapeTM_map {k : ℕ} {State : Type} [Finite State] (tm : Turing.MultiTapeTM k Bool State) {dec : List Bool → ℕ} (hdec : Computable dec) :

      For every finite-state binary MultiTapeTM and computable decoder dec : List Bool → ℕ, mapping dec over ofMultiTapeTM tm yields a partial recursive description method.

      theorem Cslib.Kolmogorov.DescriptionMethod.exists_ecomplexity_universal_le_ofMultiTapeTM {k : ℕ} {State : Type} [Finite State] (tm : Turing.MultiTapeTM k Bool State) {dec : List Bool → ℕ} (hdec : Computable dec) :
      ∃ (c : ℕ), ∀ (x : List Bool), universal.ecomplexity (dec x) ≤ (ofMultiTapeTM tm).ecomplexity x + ↑c

      Optimality of universal over finite-state multi-tape Turing machines: for every finite-state binary MultiTapeTM and computable decoder dec : List Bool → ℕ, universal is at most an additive constant worse than ofMultiTapeTM tm.

      Using Nat.bits and List.foldr Nat.bit 0, universal is at most an additive constant worse than any finite-state binary MultiTapeTM on binary representations of natural numbers.