The atom kinds, dispatched: one stage interface for the matrix #
The matrix's sequencer treats every classified atom alike; this file makes
that literal. DescriptiveComplexity.Draw.Data.KindSem carries the one
piece of semantic data a kind's run needs (the encoded points, for an
expansion atom – the others need none),
DescriptiveComplexity.Draw.Data.kindExitCtl is the control each kind's
machinery leaves behind, and
DescriptiveComplexity.Draw.Data.kind_hStage is the uniform stage
discharge: whatever the kind, from the machinery's entry phase one cell
right of the marker to the exit phase back there, at the Slot.val-walked
presentation – the shape DescriptiveComplexity.Draw.seq_run consumes.
Generic slot-preservation through the generated families #
The semantic data of one atom's run: an expansion atom needs the points its levels' registers encode; the other kinds need nothing.
Equations
- One or more equations did not get rendered due to their size.
- dt.KindSem zero one vi st (DescriptiveComplexity.Draw.MatAtom.eq a a_1) = PUnit.{1}
- dt.KindSem zero one vi st (DescriptiveComplexity.Draw.MatAtom.ord a a_1) = PUnit.{1}
- dt.KindSem zero one vi st (DescriptiveComplexity.Draw.MatAtom.stage i a) = PUnit.{1}
Instances For
Dependency graph
A semantic pack transports along the registers it reads.
DescriptiveComplexity.Draw.Data.KindSem sees the tape state only
through the levels' register sets, so a pack at one state is a pack at
every state with the same mirror and VAL. This is what lets one pack –
built at an address's entry state – serve every position of the spine and
every round of the VAL loop, whose states differ from it in the tracks
they have written and in the two scratch registers.
Equations
- dt.kindSemCast zero one vi hmir hval (DescriptiveComplexity.Draw.MatAtom.eq a a_1) s_2 = s_2
- dt.kindSemCast zero one vi hmir hval (DescriptiveComplexity.Draw.MatAtom.ord a a_1) s_2 = s_2
- dt.kindSemCast zero one vi hmir hval (DescriptiveComplexity.Draw.MatAtom.stage i a) s_2 = s_2
- dt.kindSemCast zero one vi hmir hval (DescriptiveComplexity.Draw.MatAtom.exp a ts) s_2 = ⟨↑s_2, ⋯⟩
Instances For
Dependency graph
A round trip of transports is the identity – the shape the VAL loop's bridge closes with: the pack leaves the round state, travels to the round's own state and to the state its matrix threads, and comes back.
Dependency graph
The control one atom's machinery leaves behind, by kind: the fold's exit at the comparison's or the expansion atom's family, the verdict store at the stage atom's read bit.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
An atom's machinery is blind to the two scratch registers: each
kind's loop reads the levels' register sets and its background at the
working cell, and each kind's exit reads the control alone
(DescriptiveComplexity.Draw.Data.cmpArgs_exitSt_congr and its two
siblings). The pack travels by
DescriptiveComplexity.Draw.Data.kindSemCast, which keeps its points.
This is the brick the whole threaded-versus-unthreaded bridge is built
from.
Dependency graph
The state an atom leaves: a stage atom normalizes SAV and TARGET to the home address (its random access writes them whatever they held), every other kind leaves the state alone.
Equations
- dt.kindEndSt vi v (DescriptiveComplexity.Draw.MatAtom.stage i a) st = DescriptiveComplexity.Draw.Data.stageEndSt st v
- dt.kindEndSt vi v κ st = st
Instances For
Dependency graph
The uniform stage discharge: whatever the kind, the atom's machinery
runs from its entry phase one cell right of the marker to the exit phase
back there, leaving DescriptiveComplexity.Draw.Data.kindExitCtl in the
control and the tape untouched.
Dependency graph
The matrix, assembled #
The control thread across the matrix's atoms: each atom's machinery
entered through the dispatch's enterSt, its exit control the next
atom's input.
Equations
Instances For
Dependency graph
The threaded states of the matrix #
The state after the matrix's first n atoms: each stage atom
normalizes SAV and TARGET, the other kinds change nothing.
Equations
Instances For
Dependency graph
The threaded states differ from the entry state in SAV and TARGET alone – so every hypothesis the atoms need at them is the entry state's.
Dependency graph
The same two, along the matrix's whole chain of atoms.
Dependency graph
The semantic data of every atom, from one encoded valuation: the expansion atoms' points are the valuation's, everything else needs nothing.
Equations
- dt.mkKindSem zero one vi st w hENC (DescriptiveComplexity.Draw.MatAtom.eq a a_1) = PUnit.unit
- dt.mkKindSem zero one vi st w hENC (DescriptiveComplexity.Draw.MatAtom.ord a a_1) = PUnit.unit
- dt.mkKindSem zero one vi st w hENC (DescriptiveComplexity.Draw.MatAtom.stage i a) = PUnit.unit
- dt.mkKindSem zero one vi st w hENC (DescriptiveComplexity.Draw.MatAtom.exp a ts) = ⟨fun (ℓ : Fin k) => w (ts ℓ), ⋯⟩
Instances For
Dependency graph
The control thread across the matrix's atoms, threaded: as
DescriptiveComplexity.Draw.Data.matFs, with each atom's exit control
computed at the state that atom actually runs at.
Equations
Instances For
Dependency graph
A threaded state of the matrix is the entry state up to the two
scratch registers – matSt_eq in the form the congruences take.
Dependency graph
The matrix is blind to the two scratch registers: atom by atom,
kindExitCtl_congr_scratch.
Dependency graph
The threaded matrix is the unthreaded one: an atom's machinery
reads the levels' registers and its background at the working cell
(kindExitCtl_congr_scratch), and the threading rewrites SAV and TARGET
alone. This is the bridge between the control the run produces and the
control the semantics is stated at.
Dependency graph
The matrix's run: from the checkpoint before the first atom at the marker to the exit phase one cell to its right after the last, the verdict slots holding each atom's fold, the tape untouched.
Dependency graph
The gates, assembled #
The control thread across the gates' blocks (the all-pass path):
each block's machinery entered through the dispatch's enterSt, its
conjoining exit the next block's input.
Equations
Instances For
Dependency graph
The gates' run at a gated address: every block passes its shape test, every domain evaluation runs on its block's decoded tag, and the sequence exits with the conjoined verdict in the flag.