Documentation

CslibFrontier.Computability.Machines.Turing.MultiTape.Complexity.LogSpace.ConfigurationGraph.RadixRounds

Radix rounds #

A simulation that cannot compute the space of its source can still find a compact configuration graph that represents every reachable view: it tries the radices startRadix State n, 4 * startRadix State n, 16 * startRadix State n, … in turn and keeps the first one in whose graph no reachable vertex overflows (Turing.MultiTapeNTM.ConfigurationGraph.fits_of_not_overflow). The space of the source then only bounds the number of rounds: a source visiting at most S work cells fits every radix from round 4 * S + 1 on (Turing.MultiTapeNTM.ConfigurationGraph.fits_roundRadix_of_runsInSpace), and the vertices of round j have O(j + log₂ n) bits (Turing.MultiTapeNTM.ConfigurationGraph.vertexWidth_roundRadix_le). Inductive counting grows its radix this way, so that its space bound need not be constructible [Imm88].

Main definitions #

Main results #

References #

The radices #

The first radix tried: above every input position and every finite tag.

Instances For

    The radix of round j: the first radix times 4 ^ j.

    Instances For
      theorem Turing.MultiTapeNTM.ConfigurationGraph.roundRadix_succ {State : Type} [Fintype State] (n j : ℕ) :
      roundRadix State n (j + 1) = 4 * roundRadix State n j
      theorem Turing.MultiTapeNTM.ConfigurationGraph.roundRadix_mono {State : Type} [Fintype State] (n : ℕ) {j j' : ℕ} (h : j ≤ j') :
      roundRadix State n j ≤ roundRadix State n j'

      Larger radices have larger ambient graphs.

      theorem Turing.MultiTapeNTM.ConfigurationGraph.roundRadix_le_two_pow {State : Type} [Fintype State] (n j : ℕ) :
      roundRadix State n j ≤ 2 ^ (2 * j + n.log2 + Fintype.card (Option State) + 4)

      Round j has a radix below 2 ^ (2 * j + log₂ n + O(1)).

      The vertices of round j have O(j + log₂ n) bits.

      Fitting the rounds #

      theorem Turing.MultiTapeNTM.ConfigurationGraph.fits_init {k : ℕ} {State : Type} [Fintype State] {ntm : MultiTapeNTM k Bool State} {B : ℕ} {w : List Bool} (hB : Fintype.card (Option State) + 1 < B) :
      Fits B (registers (ntm.initView w))

      The initial view fits every radix above the finite tags.

      theorem Turing.MultiTapeNTM.ConfigurationGraph.startID_lt {k : ℕ} {State : Type} [Fintype State] {ntm : MultiTapeNTM k Bool State} {B : ℕ} (hB : Fintype.card (Option State) + 1 < B) :

      The start vertex lies below the ambient bound of every radix above the finite tags.

      theorem Turing.MultiTapeNTM.ConfigurationGraph.fits_roundRadix_of_runsInSpace {k : ℕ} {State : Type} [Fintype State] {ntm : MultiTapeNTM k Bool State} {w : List Bool} {S j : ℕ} (hs : ntm.RunsInSpace w S) (hj : 4 * S + 1 ≤ j) {v : FiniteCfg k Bool State} (hv : Relation.ReflTransGen ntm.ViewStep (ntm.initView w) v) :

      A space bound fits the late rounds: every view reachable by a source that visits at most S work cells fits the radix of every round from 4 * S + 1 on.