What the clocked program's file-laying sweep writes #
DescriptiveComplexity.Draw.SweepSpec leaves the write to the caller, because
what a cell of the file holds is a fact about the layout and not about the shape
of the loop. This file is that fact at the layout a clocked program uses
(DescriptiveComplexity.Draw.Data.blkLaid): the sweep writes, at the register
the pointer names, the mark of that register – it is a register, whether it
is the first or the last of the file, its block one-hot, its coordinates, and
that it is canonically padded – and the blank in every track.
The one theorem is that this is the background the file's run installs
(DescriptiveComplexity.Draw.Data.buildWr_eq_ixBack): slot by slot, the mark
the pointer can compute agrees with
DescriptiveComplexity.Draw.Data.ixBack at the register's cell, given that
the state's own tracks are clear – which they are, the file being laid before
anything is written to it.
What makes the agreement possible at all is that a register's contents depend on its block and its named tuple and on nothing else, which is the point the whole index parameter was introduced for: the pointer holds exactly those, the block in the phase and the tuple in the control.
The pointer's advance is here too: DescriptiveComplexity.Draw.Data.ptrNext
writes the next register's tuple into the control's coordinate slots and leaves
every other slot alone, and
DescriptiveComplexity.Draw.Data.buildSpec is the whole
DescriptiveComplexity.Draw.SweepSpec the file-laying phase runs at. The
guessing phase's write is here as well
(DescriptiveComplexity.Draw.Data.guessWr): the cell it read with the stage
tracks holding the guessed value, and nothing else touched.
The tuple the pointer holds: the control's coordinates, at the slots the caller reserved for them.
Instances For
Dependency graph
What the file-laying sweep writes: the mark of the register the pointer
names, and the blank in every track. Every one of these is read off the block
the phase carries and the coordinates the control holds, which is what makes it
a legal DescriptiveComplexity.Draw.SweepSpec.wr.
Equations
- dt.buildWr zero one coord b f DescriptiveComplexity.Draw.Slot.reg = one
- dt.buildWr zero one coord b f DescriptiveComplexity.Draw.Slot.regFirst = DescriptiveComplexity.Draw.bitVal zero one ((b, dt.ptrTup coord f) = DescriptiveComplexity.blkBot A dt.KIx dt.dd)
- dt.buildWr zero one coord b f DescriptiveComplexity.Draw.Slot.regLast = DescriptiveComplexity.Draw.bitVal zero one ((b, dt.ptrTup coord f) = DescriptiveComplexity.blkTop A dt.KIx dt.dd)
- dt.buildWr zero one coord b f (DescriptiveComplexity.Draw.Slot.blk c) = DescriptiveComplexity.Draw.bitVal zero one (b = c)
- dt.buildWr zero one coord b f (DescriptiveComplexity.Draw.Slot.name j) = f (coord (Fin.castLE ⋯ j))
- dt.buildWr zero one coord b f DescriptiveComplexity.Draw.Slot.pdd = DescriptiveComplexity.Draw.bitVal zero one (∀ (j : Fin dt.dd), dt.dd0 ≤ ↑j → f (coord j) = zero)
- dt.buildWr zero one coord b f DescriptiveComplexity.Draw.Slot.mir = zero
- dt.buildWr zero one coord b f DescriptiveComplexity.Draw.Slot.tgt = zero
- dt.buildWr zero one coord b f DescriptiveComplexity.Draw.Slot.sav = zero
- dt.buildWr zero one coord b f DescriptiveComplexity.Draw.Slot.val = zero
- dt.buildWr zero one coord b f DescriptiveComplexity.Draw.Slot.wk = zero
- dt.buildWr zero one coord b f DescriptiveComplexity.Draw.Slot.bot = zero
- dt.buildWr zero one coord b f DescriptiveComplexity.Draw.Slot.ltp = zero
- dt.buildWr zero one coord b f (DescriptiveComplexity.Draw.Slot.old a) = zero
- dt.buildWr zero one coord b f (DescriptiveComplexity.Draw.Slot.new a) = zero
Instances For
Dependency graph
The sweep's write is the file's background, at the register the pointer names: every mark is a fact about the register's block and named tuple, and every track is clear at the registers – the file is laid before anything is written to it, and what the marker does below them is no business of a register's mark.
Dependency graph
The pointer's advance, and the specification it makes #
The pointer's advance: the control with its coordinate slots holding the next register's tuple, every other slot left alone.
Equations
Instances For
Dependency graph
The control holding a register's tuple: the given control with its coordinate slots carrying the tuple, and every other slot as it was. This is what the pointer is, and the sweep's advance moves it from one register's to the next's.
Instances For
Dependency graph
The pointer reads back the tuple it was set to.
Dependency graph
Setting the pointer forgets the pointer that was there: the coordinate slots are overwritten and every other slot rides along, so the exit's reset of the pointer to the file's first register lands exactly where the next sweep starts.
Dependency graph
The advance carries the pointer from one register to the next: at a control holding a register's tuple, the advance holds the next register's.
Dependency graph
The sweep that does nothing: it writes nothing, moves no pointer and is
over at once. A program that is handed its file – the register channel of
DescriptiveComplexity.WideRegAccept hands one over – has nothing to lay, and
this is what it puts where a file-laying program puts
DescriptiveComplexity.Draw.Data.buildSpec: the site's rules still exist, and
the one that fires is the one whose guard is «rolled over and done», so the
phase costs a single step.
Being trivial it is definable at once (uSweepSpecDef_nullSpec), and it needs
no coordinate map – which is the point, a pointer wide enough to name a register
being what no wide machine's control can hold
(DescriptiveComplexity.Problems.Wide.Limits).
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The file-laying sweep, specified: write the register's mark, advance the pointer, roll over at the last tuple of a block and stop at the last register of the file.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
A roll-over lands in the next block's first register, which is what
DescriptiveComplexity.Draw.SweepSpec.nx being a function of the block alone
buys: at the last tuple the advance's block is blkNextB of the current one.
Dependency graph
What the guessing sweep writes #
The guessing phase runs the same sweep over the same stretch with the background
on both sides (DescriptiveComplexity.Draw.Prog.reachesIn_guessTracks): what
changes at a cell is the stage tracks and nothing else, so the write is the cell
it read with those tracks set to the guessed value, and the value is a shape –
one rule per assignment of the tracks – which is the program's only
nondeterminism.
What the guessing sweep writes: the cell it read, with the stage tracks holding the guessed value.
Equations
- dt.guessWr zero one x g (DescriptiveComplexity.Draw.Slot.old i) = DescriptiveComplexity.Draw.bitVal zero one (x i = true)
- dt.guessWr zero one x g DescriptiveComplexity.Draw.Slot.reg = g DescriptiveComplexity.Draw.Slot.reg
- dt.guessWr zero one x g DescriptiveComplexity.Draw.Slot.regFirst = g DescriptiveComplexity.Draw.Slot.regFirst
- dt.guessWr zero one x g DescriptiveComplexity.Draw.Slot.regLast = g DescriptiveComplexity.Draw.Slot.regLast
- dt.guessWr zero one x g (DescriptiveComplexity.Draw.Slot.blk c) = g (DescriptiveComplexity.Draw.Slot.blk c)
- dt.guessWr zero one x g (DescriptiveComplexity.Draw.Slot.name j) = g (DescriptiveComplexity.Draw.Slot.name j)
- dt.guessWr zero one x g DescriptiveComplexity.Draw.Slot.pdd = g DescriptiveComplexity.Draw.Slot.pdd
- dt.guessWr zero one x g DescriptiveComplexity.Draw.Slot.mir = g DescriptiveComplexity.Draw.Slot.mir
- dt.guessWr zero one x g DescriptiveComplexity.Draw.Slot.tgt = g DescriptiveComplexity.Draw.Slot.tgt
- dt.guessWr zero one x g DescriptiveComplexity.Draw.Slot.sav = g DescriptiveComplexity.Draw.Slot.sav
- dt.guessWr zero one x g DescriptiveComplexity.Draw.Slot.val = g DescriptiveComplexity.Draw.Slot.val
- dt.guessWr zero one x g DescriptiveComplexity.Draw.Slot.wk = g DescriptiveComplexity.Draw.Slot.wk
- dt.guessWr zero one x g DescriptiveComplexity.Draw.Slot.bot = g DescriptiveComplexity.Draw.Slot.bot
- dt.guessWr zero one x g DescriptiveComplexity.Draw.Slot.ltp = g DescriptiveComplexity.Draw.Slot.ltp
- dt.guessWr zero one x g (DescriptiveComplexity.Draw.Slot.new i) = g (DescriptiveComplexity.Draw.Slot.new i)
Instances For
Dependency graph
The guess's write installs the guessed tracks: at the cell under the head, the background of the state with its stage tracks replaced – which is what the guessing run asks of the rule, and all it asks.
Dependency graph
The guessing sweep, specified: write the guessed stage tracks, advance the pointer, roll over and stop exactly where the file-laying sweep does – it is the same walk over the same registers, and only the write differs.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The region-wide guess, specified: the same write as the file's, and a
pointer that never moves – a control holding dd₀ coordinates cannot count the
region, so the walk carries no pointer at all. Every step is a roll-over that
stays in its own block phase, which is the one arm of the guess site whose guard
is then always true; the walk's end is the site's own stopping rule and not a
test on the control.
Equations
- One or more equations did not get rendered due to their size.