Tidiness is free at zero space #
A machine that runs in zero space has no work tapes
(Turing.MultiTapeTM.ComputableInTimeAndSpace.exists_no_work_tapes), so the only part of its
final configuration that can differ from the start is the input head. Following it with
Turing.MultiTapeTM.rewindInput moves that head back, which makes the computation tidy in the
sense of Turing.MultiTapeTM.ComputesTidilyInTimeAndSpace.
Main definitions #
Turing.MultiTapeTM.tidyCopy: the identity, as a tidy machine without work tapes.
Main results #
Turing.MultiTapeTM.ComputableInTimeAndSpace.computableTidilyInTimeAndSpace: a function computable in timetand zero space is computable tidily in time2 * t + 2and zero space.Turing.MultiTapeTM.computableTidilyInTimeAndSpace_id: the identity is tidily computable in linear time and zero space.
Machines without work tapes #
If a machine without work tapes has a run path from its start to a halted configuration, then
following it with Turing.MultiTapeTM.rewindInput computes the output of that configuration
tidily: the rewind returns the input head from its position p in p - 1 + 2 further steps.
A machine without work tapes that computes output in time t, followed by
Turing.MultiTapeTM.rewindInput, computes output tidily in time 2 * t + 2: in t steps the
input head moves at most t cells, so the rewind takes at most t + 2 steps.
Zero space #
A function computable in time t and zero space is computable tidily in time 2 * t + 2 and
zero space: the machine has no work tapes, so it suffices to rewind the input head.
The identity #
The identity as a tidy machine without work tapes: copy the input to the output, then move the input head back to the start.
Instances For
tidyCopy computes the identity tidily, in time linear in the length of the word.