The spine's legs at an arbitrary file #
DescriptiveComplexity.Problems.Wide.DrawInstEval read at a coarse file: one
variable's machinery per spine position, the legs' controls and states, and the
legs' runs with their costs.
The legs are generic in the outer phase: what they read of it is the
evaluation's own phases, embedded by ep, and the machineries' rules – never
the spine's, whose rule shape the space-bounded and the clocked programs do not
share. The fold of these legs is
DescriptiveComplexity.Problems.Wide.NexSpine.
The tape state after one spine position: the round state at the
final VAL content, the variable's new track set at the marker to the
machinery's verdict.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
One position's leg #
The control after one position's leg, threaded – the twin of
DescriptiveComplexity.Draw.Data.ixLegCtl, with the VAL loop's rounds run
at the states the thread produces for them.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The tape state after one position's leg, threaded: the VAL loop's
exit state – the entry state's SAV and TARGET normalized if any of its
rounds ran a stage atom – with the variable's new track written at the
marker.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
What one leg of the evaluation's spine is charged: the walk-back, the whole machinery of the position's variable, and the written exit. Uniform over the positions – the largest of the variables' costs – so the spine's fold is a single width.
Equations
Instances For
Dependency graph
What the output's leg is charged: the same shape at the output's own
machinery, which is the none variable's.
Instances For
Dependency graph
The costs, factored #
The clock compares a product: a width and a number of rounds, each bounded on
its own (nexTotal_lt_two_pow). So each cost above, which is «once plus a
round's cost per VAL content», is rewritten here as «a width times the rounds
and one more» – the width is the sum of the two parts, and nothing about the
program is used but the shape of the definitions.
A variable's machinery, as one width: what it pays once and what it pays per VAL round, added.
Equations
- dt.ixVarCD A vi w wP wR wK = dt.ixVarGatesCost A vi w wP + dt.ixRoundCost A vi w wP wR wK + 3 * wP + 6 + (2 * wP + dt.ixRoundCost A vi w wP wR wK + 3)
Instances For
Dependency graph
The width of a leg of the spine: the largest variable's, and the leg's own two steps.
Equations
- dt.ixLegWidth A w wP wR wK = 4 + Finset.univ.sup fun (j : Fin dt.nv) => dt.ixVarCD A (dt.varAt j) w wP wR wK
Instances For
Dependency graph
The width of the whole clocked evaluation: the spine's width times its positions, the output machinery's own, and the four steps that join them – the dispatch into the spine, the dispatch into the output's leg and the two the legs themselves pay. This is the first factor the clock compares.
Equations
- dt.ixEvalWidth A w wP wR wK = dt.ixLegWidth A w wP wR wK * dt.nv + dt.ixVarCD A none w wP wR wK + 4
Instances For
Dependency graph
One spine position's leg – threaded: the leg without the boundary
hypotheses hsav/htgt, which the sweep cannot supply at more than one
address. The leg ends in
DescriptiveComplexity.Draw.Data.ixLegStT, the machinery's own exit state
with the stage bit written at the marker.
Dependency graph
One spine position's leg at a junk address: the walk-back, the
machinery's failing gates, and the erased stage slot at the marker – the
verdict False, the VAL register untouched.
Dependency graph
One spine position's leg at a shaped but ungated address: the
walk-back, the whole gate sequence – every file test passing, the total
dispatch carrying every block through – the clear flag at the verdict
checkpoint, and the erased stage slot at the marker: the verdict False,
the VAL register untouched. With
DescriptiveComplexity.Draw.Data.ixVarLeg_run_thread_reachesIn and
DescriptiveComplexity.Draw.Data.ixVarLegFail_reachesIn this covers every
address the sweep visits.
Dependency graph
The output's leg #
The out machinery is the same shape at vi := none, entered by the walk
home after a passed convergence sweep, its exit the accepting phase. Its
stage slot is the working-cell marker itself, so an accepting verdict's
write is idempotent – the tape after the leg is the machinery's own end
tape.
The control after the output's leg: the out machinery's exit fold.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Which leg a position takes #
A position's machinery has three runs, by what its gates do:
DescriptiveComplexity.Draw.Data.ixVarLeg_run_thread_reachesIn when every block is
well shaped and the tags and the domain sentence agree,
DescriptiveComplexity.Draw.Data.ixVarLegUngated_reachesIn when the blocks are
well shaped but the verdict flag is cleared, and
DescriptiveComplexity.Draw.Data.ixVarLegFail_reachesIn when a block fails the
shape test – which is the one that needs a witness, and a least one, so
that the blocks before it have run.
The shape test the gates run, at a position and a state: the
per-cell question a block's TestKit asks, which is what tells the third
leg from the other two.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The tag a block's witness cells name, as the machine reads it –
so htagOf is rfl at this choice.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The other half of a block's gate: its tag witnesses are one-hot at
the tag they name, and the expansion's domain sentence holds of the point
the block decodes. Together with
DescriptiveComplexity.Draw.Data.ixShapeAt this is the gates' verdict.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
A position is gated when every block passes both halves.
Equations
Instances For
Dependency graph
The state one position's leg leaves, whichever leg it takes: the machinery's own exit at a gated position, and the entry state with the stage bit erased at the two ungated ones – which agree on the tape and differ only in their control.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The control one position's leg leaves: the machinery's fold at a gated position, the ungated exit when the blocks are well shaped but a tag or the domain fails, and the failing gates' exit – at the least badly shaped block – otherwise.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
What a leg leaves alone, whichever leg it takes: the ungated legs
never enter the VAL loop, so they touch nothing but the stage bit, and the
gated one is DescriptiveComplexity.Draw.Data.ixLegStT_fields. The val
register is left out on purpose – it is the loop's top at a gated
position and the entry state's at the other two.