One variable's machinery: the run #
The run theorem of DescriptiveComplexity.Draw.Data.varRule – the spine of
the per-variable evaluation. The two abstract machineries stay abstract: the
gates' run and the matrix's runs enter as hypotheses, one per VAL-loop
round, and this file contributes exactly the spine – the entry dispatch, the
VAL clear (DescriptiveComplexity.Draw.ClearKit), the rounds of matrix pass,
exhaustion test (DescriptiveComplexity.Draw.TestKit) and block-indexed
increment (DescriptiveComplexity.Draw.IncrKit) with the fold updates riding
in the dispatches, and the arrival at the exit checkpoint once VAL is
exhausted.
The background conditions every kit reads are bundled once
(DescriptiveComplexity.Draw.Data.VarBg); the VAL register's contents over
the rounds are an abstract family mV over an abstract enumeration, exactly
as in the element loop's run.
What indexes the file is a parameter (DescriptiveComplexity.Draw.LaidFile),
because everything the loop carries is a set of registers – the VAL register's
contents, a level's block value, the exhaustion pattern – and never an address of
the working area. So a clocked program, whose file has far fewer registers than
the universe has elements, runs this loop unchanged.
The run comes with its cost (var_reachesIn): the gates' width, the VAL
clear, one matrix pass, and then per round the test, the increment, the pass and
three dispatches – the loop's own count once per element of the enumeration.
var_run and var_run_fail are the same runs with the budget forgotten: the
widths are read off the caller's own runs
(DescriptiveComplexity.TMData.exists_reachesIn_of_reflTransGen) and the
sweeps' off wideRank_lt_card, so a space-bounded caller counts nothing.
The background conditions of the VAL loop's kits, bundled: the
working-cell marker sits at v, the register file's marks are in place, and
the VAL slot backs the given track.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The exhaustion condition of a VAL-loop round: the register's bit at an element is set exactly when the element lies in an inner block – the “VAL = Kin-top” pattern the exhaustion test decides.
Instances For
Dependency graph
The machinery, entered: from the entry checkpoint at the marker, through the gates, to the verdict checkpoint.
Dependency graph
One variable's machinery runs: from the entry checkpoint at the marker, through the gates, the VAL clear and the rounds of matrix pass, test and increment, to the exit checkpoint – VAL exhausted, the verdict spelled by the accumulators the dispatches folded.
Dependency graph
The two boundary steps a caller owes #
A spine dispatches into the machinery at the successor of the marker, and
receives the exit at the successor again: the walk back into the entry
checkpoint, and the written exit step out of vchk2.
The walk back into the entry checkpoint: arriving from a caller's dispatch one cell right of the marker, the checkpoint steps back to it.
Dependency graph
The written exit step: at the marker, the exit checkpoint writes the variable's verdict into its stage slot and leaves right into the exit phase, the control untouched.
Dependency graph
The failing exit step: at the marker with the gates' verdict flag clear, the verdict checkpoint erases the variable's stage slot and leaves right into the exit phase, skipping the whole VAL loop.
Dependency graph
The machinery on a failing address: through the gates to the verdict checkpoint, whose clear flag routes straight to the exit – the stage slot erased, the VAL loop never entered.
Dependency graph
The runs with their budgets forgotten #
What a space-bounded caller reads. The widths are recovered from the runs it
supplies (DescriptiveComplexity.TMData.exists_reachesIn_of_reflTransGen), the
sweeps' from wideRank_lt_card, so nothing has to have been counted.
The machinery on a failing address, the budget forgotten.
Dependency graph
One variable's machinery runs, the budget forgotten: what a space-bounded caller reads.