The last four layers, and the program's own kits #
One round, one variable's machinery, the evaluation's spine and the outer loop
are the four remaining combinators, and each is checkpoints over machineries
that are already discharged. What is new here is small and concrete: the
program's own kits (DescriptiveComplexity.Draw.Data.compareKit,
copyKit, seekKit, advKit, clearMirKit, tgtTopKit) and the two
questions they are written from – every stage track agrees with its next
(DescriptiveComplexity.Draw.Data.cmpG), and the working cell is at an
argument-tagged block. Each is a conjunction, a disjunction or an equivalence
of the three atoms, indexed by a finite type.
One round #
One round's rules are definable: the branch checkpoint's dispatches read the two gate flags, which are control slots.
Dependency graph
One variable's machinery #
One variable's machinery is definable: five checkpoints, the VAL clear, the exhaustion test and the block-indexed increment, with the folds as the caller's control updates and the two stage writes as single-slot updates.
Dependency graph
The evaluation's spine #
The evaluation's spine is definable: one checkpoint per variable position, the last one erasing the marker towards the sweep's advance or the post-sweep reset.
Dependency graph
The program's own questions and rewrite #
The convergence test's question is definable: one equivalence per fixed-point variable.
Dependency graph
The copy-back's rewrite is definable: every stage track takes its next's digit, and every other slot rides along – a decision made slot by slot.
Dependency graph
The outer loop #
The outer program's rules are definable: thirteen kits with their exit rules, the initial step, and the evaluation's rules as the parameter.