The clocked program's whole run, and its clock #
The two halves are counted separately – the opening and the evaluation
(DescriptiveComplexity.Draw.Data.nexEval_reachesIn) – and this file puts
them together and compares the sum with the clock.
The opening is DescriptiveComplexity.Draw.Data.reachesIn_openingRegion,
here: the approach walk up to the file's base, the file-laying sweep, and the
guess along the region below the file – one bit per address, which is what the
guessed relations are – for
2·R + 2·base + (the guessed stretch out and back) + 4, and openingRegion_le
bounds that
by the number of addresses.
Two things are worth naming. The presentation bridge: the opening is stated
with the tape walked along the mirror track and the evaluation along VAL, and
the two are the same tape whenever both marks are the background's own
(DescriptiveComplexity.Draw.trackTape_of_back), so the caller hands that
equality over rather than either run being restated. And the arithmetic:
the total is «opening + rounds × width», which is mul_add_lt_two_pow's shape –
so what the clock asks is that the opening and each of the evaluation's two
factors fit the region, with one surplus block of slack for the additive term.
The opening is a bare number there
(nexTotal_lt_two_pow), so either shape of it is compared the same way.
The initial end is here as well, and it is three small facts.
DescriptiveComplexity.Draw.Prog.trackTapeAt_initBack says the all-blank tape is
the pass-layer presentation at any file – which a clocked program needs,
because its file does not exist at time zero – and
DescriptiveComplexity.Draw.Data.startBack with startBack_frame /
startBack_wr is the background the opening's first step leaves: the one it
started from with the marker planted, which is the frame condition and the write
that step asks for.
The forward direction lands here too (nexProg_wideAccept): an accepting run
of fewer than 2 ^ n steps from the initial configuration is a yes-instance of
DescriptiveComplexity.WideAccept. Two of its hypotheses are rfl at the
assembled program, and that is the point of the program declining the input
channel's marks: with mark the blank, the tape is blank everywhere at time
zero and the channel's ruler is not there to be mistaken for a register
(trackTape_blank_congr for the presentations).
The backward direction's foundation is here as well: nexProg_sepOn – the
program separates at every post-guess phase, across sites by the owner map and
within a site by nexSep_postGuess – and nexProg_uniqueFrom, which is what a
reduction reads its certificate off an arbitrary accepting run with. The fact
it stands on – that the evaluation's rules never leave the post-guess phases –
is proved, not assumed:
nexEvalRuleF_postGuess, and under it a chain of «this machinery leaves only
into its own phases or its exit» lemmas, one per builder, down to the trips.
The opening, with the guess over the region #
The state a clocked program starts in #
Its first step plants the marker at the empty address and nothing else has been
written, so the state is clear but for the marker – and its background is the
blank tape everywhere off the file, which is what the opening's frame
hypotheses (hbelow, habove, hwr) ask of the caller.
The state a clocked program enters its opening in: every register and every track clear, the marker and the bottom mark at the address the head stands on – the two the opening's first step writes, and the two the evaluation's walks read.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The clocked program's opening: the opening step, the approach walk up to the file's base, the file-laying phase, the walk home with the turn into the guess, the region-wide guess with its stop and its own walk home, and the dispatch into the evaluation.
The file is laid above the program's data and the certificate is guessed below it, which is what lets a stage atom seek to a dictionary entry: the entry is a logical address and every logical address is below every register. The approach is the price of that arrangement – the base is not the marker's neighbor, so getting there is a walk and not a step – and where it stops is the program's choice, a machine having no landmark but the cell it started on.
Dependency graph
What the guess writes #
The stage tracks a clocked program guesses are an assignment's, restricted to
the stretch the guess sweeps – the file's first register up to the end marker.
Restricting them is what makes the opening's frame condition true (outside that
stretch the tracks are the entry state's, which is empty), and it costs the
dictionary nothing, since every entry the evaluation reads is inside the stretch
(a track marks no empty address, nonempty_of_trackOf).
The tracks the guess writes: an assignment's, inside the swept stretch.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The opening of a program that is handed its file #
A program handed its file has nothing to lay: its file-laying phase is the two
steps of nullSpec and the rest of the opening is the same. So the whole
opening is stated here at an arbitrary file – the five steps of
NexBuild's AnyFile section, the sweep that is over at once, the two walks
home and the guess, which was generic already. Nothing of the file is read but
its cells.
The whole opening of a program that is handed its file: plant the two marks, walk up, run the sweep that lays nothing, turn round, walk home, guess the certificate over the stretch, walk home again, and step into the evaluation. Its cost is the two walks up and back, the guess's stretch out and back, and six single steps.
Dependency graph
The clock comparison, with the opening at twice the region: the shape a
program that lays a file and guesses over the region actually meets – its
opening is two sweeps, not a fraction of one. One working block is enough
(1 ≤ k), and the rest is mul_add_lt_two_pow'.
Dependency graph
The forward direction at the assembled program #
A clocked program starts on a blank tape: it declines the input
channel's marks – its mark is the blank – so its initial background is the
constant blank, and the tape it starts on is the one its opening runs from
whatever file it means to lay.