Documentation

CslibFrontier.Computability.Machines.Turing.MultiTape.Encodings.Configuration

Encodings of finite binary machine configurations #

The encoding stores the input, control, unary input position, work tapes, output and every query and answer buffer. Its length bound charges replies separately from the machine clock: a short oracle run may receive a long word.

Main definitions #

Main results #

References #

Adapts Computability/Probabilistic/Configuration.lean on the cslib crypto branch at 5ff69ca93402e7c947208dc56396d6d86203ccd8, reusing the existing finite configuration and encodings.

noncomputable def Turing.MultiTapeTM.encFiniteCfg {k : ℕ} {State : Type} [Finite State] :

Store the input, control, unary input position, complete work tapes and accumulated output.

Instances For
    @[reducible, inline]
    noncomputable abbrev Turing.MultiTapeTM.encChannels {Oracle : Type} [Fintype Oracle] :

    The oracle channels of a configuration, as a table in Fintype.equivFin order of the oracles. Each entry is a pair: the framed pending request word, then the complete answer tape.

    Instances For
      noncomputable def Turing.MultiTapeTM.encFiniteConfig {k : ℕ} {State : Type} [Finite State] {Oracle : Type} [Fintype Oracle] :

      Store the ordinary finite configuration and all pending requests and answer tapes.

      Instances For
        theorem Turing.MultiTapeTM.length_encFiniteConfig_le {k : ℕ} {State : Type} [Finite State] {Oracle : Type} [Fintype Oracle] :
        ∃ (c : ℕ), ∀ (inputSize steps answerSize : ℕ) (cfg : MultiTapeMachine.FiniteConfig k Bool State Oracle), MultiTapeMachine.FiniteConfig.SpaceBound inputSize steps answerSize cfg → (encFiniteConfig cfg).length ≤ c * (inputSize + steps + answerSize + 1)

        The whole encoding is linear in input length, elapsed steps and the largest installed reply. The constant depends only on the fixed control, channel type and number of work tapes.