The two ends of a program's run, at the pass-layer presentation #
DescriptiveComplexity.Draw.Table.isInit and
DescriptiveComplexity.Draw.Table.acceptsSpace state the two ends of a run at
an arbitrary tape function; a program's phases are all stated at the
DescriptiveComplexity.Draw.Prog.trackTapeAt presentation. This file joins them.
DescriptiveComplexity.Draw.Prog.initBack is the background at time zero – the
mark of the cell's element on the register file, the blank everywhere else –
and DescriptiveComplexity.Draw.Prog.trackTape_initBack says the initial tape
is the presentation walking any track whose mark and blank digits are clear,
with the empty track: which is why the all-blank start needs no initialization
sweep. On top of it, DescriptiveComplexity.Draw.Prog.isInit_prog is the
initial configuration a program's first phase starts from, and
DescriptiveComplexity.Draw.Prog.acceptsSpace_prog /
DescriptiveComplexity.Draw.Prog.dwideAcceptSpace_prog are what a finished run
delivers – for the latter, together with the separation argument
(DescriptiveComplexity.Draw.Prog.sep_of), the two promises of
DescriptiveComplexity.DWideAcceptSpace.
The background at time zero #
The background at time zero: the mark of the cell's element on the register file, the blank everywhere else.
Equations
- PR.initBack r s = if h : ∃ (x : DescriptiveComplexity.Draw.Univ A R P K dd), r = DescriptiveComplexity.wmSeg x then PR.mark h.choose s else PR.blank s
Instances For
Dependency graph
On a register cell the background is the mark.
Dependency graph
Off the register file the background is the blank.
Dependency graph
The initial tape is the pass-layer presentation, walking any track whose mark and blank digits are clear, with the empty track: the all-blank start needs no initialization sweep.
Dependency graph
The initial tape does not depend on which file presents it: the same
statement at an arbitrary file. Nothing of the file is read – the walked track
is empty, so the only cell-dependent part of the presentation is a bit that is
False wherever the head is – and that is what lets a clocked program, whose
file is not the channel's and does not exist yet at time zero, start its opening
in the presentation the rest of its run is stated in.
Dependency graph
A program may decline the input channel's marks. What a marked cell
carries is the program's own field, so a program that wants a blank tape at time
zero takes mark to be the blank, and then the background at time zero is the
blank everywhere – no cell of the channel's ruler is distinguishable from any
other.
That is what a clocked program does. It cannot afford the ruler
(DescriptiveComplexity.Problems.Wide.Marks), it builds its own file low on the
tape, and if the channel's marks were still there it would have to say at every
step that it has not mistaken one for a register of its own. Declining them
removes the question.
Dependency graph
The two ends of a run #
The initial configuration of a program: its start phase and pointer, the head on the empty address, the tape presenting the marks with any clear track walked.
Dependency graph
A program's accepting states are the table's.
Dependency graph
And conversely: a state the table accepts is one the program accepts. The pointer is recovered from the payload by the same equation, which is what a backward reading needs – it is handed an accepting configuration and has to say what the program decided.
Dependency graph
A program's run accepts in bounded space: start as
DescriptiveComplexity.Draw.Prog.isInit_prog says, roam, and end in a phase and
pointer the program accepts.
Dependency graph
A program's run accepts on the clock: start as
DescriptiveComplexity.Draw.Prog.isInit_prog says, run for fewer steps than there
are addresses, and end in a phase and pointer the program accepts.
Dependency graph
A program's run makes its instance a yes-instance of
DescriptiveComplexity.WideAccept: well-formedness, which is free, and an
accepting run within the clock. A program that guesses produces this and not
DescriptiveComplexity.Draw.Prog.dwideAcceptSpace_prog, which asks for
determinism.
Dependency graph
A program's run makes its instance a yes-instance of
DescriptiveComplexity.DWideAcceptSpace: the two promises – well-formedness
for free, determinism from the separation argument – and the accepting run.