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 #
A within-round chain preserving a control value preserves it end to end.
Dependency graph
A control value the loop's operations never write survives the whole generated element family.
Dependency graph
A control value the copy loop's operations never write survives the generated tuple family.
Dependency graph
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, threaded: as
DescriptiveComplexity.Draw.Data.kind_hStage but with no boundary
discipline assumed – the atom's exit state is
DescriptiveComplexity.Draw.Data.kindEndSt, which normalizes SAV and
TARGET exactly when the atom is a stage atom.
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 #
An atom's exit state keeps the marker, the mirror, the bottom mark and the VAL register: only SAV and TARGET can move.
Dependency graph
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
A tape state is determined by its two scratch registers, given the other seven – the shape every threaded state of the machinery has against the state it started from.
Dependency graph
The remaining registers an atom leaves alone – the three
DescriptiveComplexity.Draw.Data.kindEndSt_fields does not list, so
that the seven together pin the state down to its SAV and TARGET.
Dependency graph
The same two, along the matrix's whole chain of atoms.
Dependency graph
The matrix's threaded state is its entry state with the two scratch
registers rewritten – the sharpening of
DescriptiveComplexity.Draw.Data.matSt_fields that lets the loop above
thread the two registers instead of the whole state, and with them keep
every semantic pack at the state it was built for.
Dependency graph
A foreign verdict slot survives one atom's machinery: whatever the kind, its exit control writes its own verdict slot and scratch, never another atom's.
Dependency graph
An accumulator slot survives one atom's machinery: no atom's exit control ever writes the inner fold's vector.
Dependency graph
The inner fold's vector survives the whole matrix: no atom writes it, so the thread's accumulators after all atoms are the entry's.
Dependency graph
An atom's verdict bit survives the rest of the matrix: the thread's
value at atom a's slot after all atoms is what atom a's own machinery
wrote.
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 transport of a built pack is the built pack: mkKindSem puts
the valuation's points in and nothing else, and the proof components are
irrelevant.
Dependency graph
One round's agreement is the padded bits': given the two registers hold encodings, the machine's per-tuple question is the encodings'.
Dependency graph
The equality atom's verdict is point equality: agreement at every tuple decides the two encoded points.
Dependency graph
The order atom's verdict is the chosen order: agreement everywhere, or a first difference with the second block holding the cell, is exactly the binary order of the two encodings – the order the reduction puts on the points.
Dependency graph
One atom's own verdict bit is its truth: whatever the kind, the bit
the exit control writes in the atom's slot is MatAtom.holds at the
encoded valuation.
Dependency graph
The matrix's verdicts, at the points: after the whole matrix, atom
a's slot holds MatAtom.holds of its kind at the encoded valuation –
the hav input of DescriptiveComplexity.Draw.Data.postLeaf_iff_qfValue,
verbatim.
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, threaded: as
DescriptiveComplexity.Draw.Data.matrix_run with no boundary discipline
assumed – the tape ends in the threaded state
DescriptiveComplexity.Draw.Data.matSt, which differs from the entry
state in SAV and TARGET alone, and only if the matrix has a stage atom.
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.
Dependency graph
The gates' run at a junk address: the blocks below ℓ₀ pass, block
ℓ₀'s shape test fails, and the run leaves the whole gate sequence through
the failing exit with the fail store applied.
Dependency graph
The gates' verdict, characterized: after the first n blocks of
the all-pass path, the flag holds exactly when it held at entry and every
gated block's decoded assignment satisfies its tag's domain sentence.