Universal input coding and polynomial-time simulation #
The universal function Turing.MultiTapeTM.Universal.universal runs a described machine on an
input for a given number of steps. Its time and space are polynomial in the length of the
description, of the input and of the number of steps written in unary
(Turing.MultiTapeTM.Universal.universal_bounds_unary), so it is tidily computable in polynomial
time when the number of steps is written in unary
(Turing.MultiTapeTM.Universal.computableTidilyInPolyTime_universal). Written in binary, the
number of steps would be exponential in its length.
The input-coding API translates bits to unary symbols (false ↦ 0, true ↦ 1) in linear time
and output size. It also certifies polynomial-time decoding of descriptions and coding of a
single bit, independently of hierarchy theorems and Ladner's language.
Main definitions #
Turing.MultiTapeTM.Universal.encTrueDoubled: a bit-list encoding doubling everytrue.Turing.MultiTapeTM.Universal.trueDoubleT,Turing.MultiTapeTM.Universal.symbolsT: transducers implementing the conversion from bit words to framed unary symbols.
Main results #
Turing.MultiTapeTM.Universal.computableTidilyInDegree_map_eBit: input symbols in linear time and output size.Turing.MultiTapeTM.Universal.computableTidilyInPolyTime_decodeDesc,Turing.MultiTapeTM.Universal.computableTidilyInPolyTime_map_eBit,Turing.MultiTapeTM.Universal.computableTidilyInPolyTime_eBit: polynomial-time description decoding and bit coding.Turing.MultiTapeTM.Universal.universal_bounds_unary: the time and space of the universal function, polynomially in the length of its input with the number of steps in unary.Turing.MultiTapeTM.Universal.computableTidilyInPolyTime_universal: the universal function, with its number of steps in unary, is polynomial-time.
References #
The symbols of the input #
The code of a bit list with every true doubled: false ↦ [false], true ↦ [true, true].
Instances For
Doubles every true.
Instances For
Reads a doubled word as the framed unary symbols 0 for false and 1 for true.
Instances For
The input as symbols, in linear time and space.
Decoding a machine description is polynomial-time in the input word.
The input of a machine as symbols is linear.
The coding of bits as symbols is a finite computation.
Simulation with a unary clock #
The time and space of the universal function, polynomially in the length of its input with the number of steps in unary.
The universal function with a unary clock is polynomial-time: written in unary, the number of steps counts towards the length of the input.