Runs one step at a time, the halting step, and machines computing in zero space #
The additions of Christian Reitwiessner's branch crei/tidy-universal to
Cslib.Computability.Machines.Turing.MultiTape.Deterministic, together with the addition of cslib
PR #1138: runs one step or one phase at a time, the time bound of a deterministic machine as a
halted run, the step at which a run halts, the output emitted in t steps, and machines computing
in zero space. Local additions give the runs of machines built with combine.
Main definitions #
Turing.MultiTapeTM.HaltsAt: the run from a configuration halts at exactly a given step.
Main results #
Turing.MultiTapeTM.runFrom_succ,Turing.MultiTapeTM.runFrom_add: a run, one step or one phase at a time.Turing.MultiTapeTM.runsInTime_iff_halted: a deterministic machine runs in timetexactly when it has halted aftertsteps.Turing.MultiTapeTM.exists_haltsAt: a halted run halts at some step.Turing.MultiTapeTM.runFrom_combine_left,Turing.MultiTapeTM.runFrom_combine_right: a machine built withcombineruns as either of its parts.Turing.MultiTapeTM.length_output_runFrom_le: intsteps a machine emits at mosttsymbols.Turing.MultiTapeTM.ComputableInTimeAndSpace.exists_no_work_tapes: a function computable in zero space is computable by a machine without work tapes.
A deterministic machine runs in time t exactly when it has halted after t steps.
The machine tm started in cfg halts at step t: it is halted after t steps and not
halted after any smaller number of steps.
Instances For
The halting step is the first step at which the machine is halted.
From the halting step on, the configuration does not change.
A run that is halted after t steps halts at some step u ≤ t.
A run that is halted after some number of steps halts at exactly one step.
Runs of combined machines #
If next₀ keeps the live states of tm₀ in tm₀, a step of tm₀ from a running
configuration is a step of the combined machine, its states relabeled along next₀.
A step of tm₁ is a step of the combined machine, if the steps of tm₁ stay in tm₁.
While tm₀ is running, the combined machine runs as tm₀, its states relabeled along next₀,
if next₀ keeps the live states of tm₀ in tm₀.
Up to the step at which tm₀ halts, the combined machine runs as tm₀, its states relabeled
along next₀, if next₀ keeps the live states of tm₀ in tm₀.
The combined machine runs as tm₁, if the steps of tm₁ stay in tm₁.
A halted configuration of the first machine, relabeled through handOver q₁, is the
configuration in which the second machine starts in q₁.
In t steps the machine emits at most t symbols.
A function computable in zero space is computable by a machine without work tapes, within the
same bounds, since every work tape costs at least one cell (MultiTapeNTM.RunsInSpace.le). The
domain must be nonempty: otherwise the machine is never run and its number of tapes is arbitrary.