What the spine does to the tape, at an arbitrary file #
DescriptiveComplexity.Problems.Wide.DrawSpineSem read at a coarse file: what a
whole spine leaves on the tape at one address, the sweep's fold over the
addresses, and the semantic packs the positions are run with.
One position's write #
The spine's writes #
The only thing the new tracks need of a position: its own cell at
the marker holds its verdict and every other cell rides. Weaker than the
cover equation hst, and weaker on purpose – a branched position's leg
is not literally a
DescriptiveComplexity.Draw.Data.ixPostVarSt of the position's entry
state (its VAL loop may normalize the two scratch registers first), while
this projection of it is
(DescriptiveComplexity.Draw.Data.ixLegStB_new).
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The spine's semantic reading #
What a whole sweep leaves behind #
The address's cell, in dictionary form #
The semantic pack, transported along the spine #
The per-position families, built #
The per-position families, threaded #
The per-position families, branched #
The threaded family above runs the gated leg at every position, which a
sweep cannot afford: it visits junk addresses too. The branched family
takes whichever of the three legs each position's own gates call for
(DescriptiveComplexity.Draw.Data.ixLegStB), and is otherwise the same
recursion – the mirror still rides, because no leg writes it.
Its semantic parameter is not the entry state's pack transported: it is
the conditioned family DescriptiveComplexity.Draw.Data.ixGatedSem
inhabits – a pack at every gated position of every state, at every address.
Conditioned, because at a junk position no pack exists (the argument blocks
encode nothing there); quantified over the address as well, because the sweep runs this spine at
v := w for an address w its own binders are fixed before. With that type the
parameter is supplied outright at the top – fun w => dt.ixGatedSem hzo hlin mV – and no semantic assumption about a position survives in the run
layer.
One node of the spine, branched.
Equations
- One or more equations did not get rendered due to their size.
- dt.ixSpineNodeB F hinj hhasP heltP mV st₀ f₀ semB 0 = ⟨st₀, ⟨⋯, f₀⟩⟩
Instances For
Dependency graph
The branched tape family of the spine.
Equations
- dt.ixSpineStOfB F hinj hhasP heltP mV st₀ f₀ semB k = (dt.ixSpineNodeB F hinj hhasP heltP mV st₀ f₀ semB ↑k).fst
Instances For
Dependency graph
The branched control family of the spine.
Equations
- dt.ixSpineFsOfB F hinj hhasP heltP mV st₀ f₀ semB k = (dt.ixSpineNodeB F hinj hhasP heltP mV st₀ f₀ semB ↑k).snd.snd
Instances For
Dependency graph
The branched spine's dictionary at one address #
Gating is per variable, and so is the reading: at an address whose blocks
below a variable's arity all encode points, that variable's cell holds one
step of the iteration there; where one of them does not, the position takes
an ungated leg, writes False, and the dictionary is False too. Nothing
is assumed of the other variables' blocks – which is what a sweep needs,
since it passes every address.
The sweep's families, over an arbitrary per-address leg #
Everything the sweep's families need of an address's evaluation is what
state and control it ends in. Taking those two as parameters makes the
whole layer – the iteration, its two cover equations, and the ride lemmas
that discharge reaches_sweep's hwkE/hmirE/hltpE – serve any
evaluation: the spine as first built, its threaded twin, and the branched
form a junk address will need.
The sweep's families #
The stage atom's restore, as an algebra #
DescriptiveComplexity.Draw.Data.stageEndSt st v = { st with sav := v, tgt := v }: the random access writes the home address into SAV and
TARGET whatever they held, so a stage atom is transparent exactly when they
held it already – which is what ixStageEndSt_eq's two hypotheses say, and
why they are not a proof artifact.
Closing the sweep's gap by “reading the mirror” therefore means threading
that normalization rather than assuming it away: an atom's exit state is
ixStageEndSt st v, and the layers above carry it. These are the equations
that threading needs; they are all definitional, which is what makes the
propagation mechanical.