A program's run at the register channel #
DescriptiveComplexity.Draw.Prog.wideAccept_prog turns a program's run into a
yes-instance of DescriptiveComplexity.WideAccept, whose channel writes for
every element. This file is the same statement at the register channel,
where a program writes for the elements it marks and the file it is handed has
one register per such element.
The marking is what a program says about its own channel: Prog.marked is a
field, fun _ => True by default, and the two ends of a run read it. At the
segment channel the program marks everything and the file is the ruler; at the
register channel it marks its argument elements and the file lies in the working
region (DescriptiveComplexity.wideRank_wmRegSeg_lt).
The elements the channel writes for are the ones the table marks: the
instance's input relation is the table's, and the table's holds at x exactly
when x is marked.
Dependency graph
The emitted machine accepts on the clock at the register channel: the
reading of DescriptiveComplexity.Draw.Table.accepts whose marks sit on the file
of the elements the table writes for.
Dependency graph
And backwards: a yes-instance's accepting run starts at the canonical
initial configuration – the start state, the empty address, and the tape the
channel wrote – because a well-formed machine with one start state has one
initial configuration (TMData.isInit_unique). This is where a backward reading
of an accepting run gets the run it walks.
Dependency graph
The background at time zero, at the register channel: the mark of the element whose cell it is, for the elements the program writes for, and the blank at every other address.
Equations
- PR.initBackReg r s = if h : ∃ (x : DescriptiveComplexity.Draw.Univ A R P K dd), PR.marked x ∧ r = DescriptiveComplexity.wmRegSeg x then PR.mark h.choose s else PR.blank s
Instances For
Dependency graph
On a register cell the background is that register's mark: two marked
elements with the same cell are equal (wmRegSeg_injOn).
Dependency graph
Off the file the background is the blank.
Dependency graph
The initial tape is the pass-layer presentation, at the register channel: the walked track is empty, so nothing of the file is read but the cells themselves.
Dependency graph
A program's run accepts on the clock, at the register channel.
Dependency graph
And backwards, at a program: a yes-instance of
DescriptiveComplexity.WideRegAccept gives a run of this program from the
configuration it starts in – the state it starts in, the empty address, and the
tape the channel wrote. The clock is dropped: a backward reading refutes
acceptance by determinism, and for that the length of the run does not
matter.
Dependency graph
A program's run makes its instance a yes-instance of
DescriptiveComplexity.WideRegAccept: the reading a clocked reduction into
the register channel produces.